web-dev-qa-db-ja.com

List <int?>をList <int>に暗黙的に変換します

Linq toEntitiesを使用しています。

Null許容列「SplOrderID」を持つエンティティ「Order」があります。

注文リストを次のように照会します

List<int> lst = Orders.where(u=> u.SplOrderID != null).Select(u => u.SplOrderID);

SplOrderIDがnull許容列であるため、selectメソッドがnull許容intを返すためだと理解しています。

LINQが少し賢くなることを期待しています。

これをどのように処理する必要がありますか?

23
MegaMind

プロパティを選択するときに、null許容値を取得します。

List<int> lst =
  Orders.Where(u => u.SplOrderID != null)
  .Select(u => u.SplOrderID.Value)
  .ToList();
47
Guffa

linq

var lst = (from t in Orders
           where t.SplOrderID.HasValue
           select new Order
           {
             SplOrderID = t.SplOrderID
           }).Select(c => c.SplOrderID.Value).ToList();

または

   var lst = (from t in Orders
               where t.SplOrderID.HasValue
               select t.SplOrderID.Value).ToList();
2
spajce

同じ問題を解決しようとしているあなたの質問を見つけました。数回試した後、この解決策を見つけました。intによって作成されたリストの各プロパティにselectをキャストしました。

List<int> lst = Orders.where(u=> u.SplOrderID != null).Select(u => (int)u.SplOrderID);
1
Vinicius