1

「追加日」と「変更日」の2つの列があります。

すべての製品を変更日で注文したいのですが、null になる可能性があるため、その場合は日付を追加したいと考えています。

 var q = from c in db.Products
                where c.UserID == UserID
                orderby c.DateModified ?? c.DateAdded descending
                select
                    new ManageProducts
                        {
                            ID = c.ID,
                            Image = c.Photo.PhotoFile,
                            Name = c.Name,
                            DateAdded = (DateTime) c.DateModified ?? c.DateAdded 
};

これは私にエラーを表示します

DateAdded = (DateTime) c.DateModified ?? c.DateAdded 

エラー

4

2 に答える 2

1

キャスト(DateTime)を削除してみてください

DateAdded = (DateTime) c.DateModified ?? c.DateAdded 

私はスニペットを書きましたが、正常に動作します

var sample = new [] {new {Nul = (int?) 5,    Val = 6}, 
                     new {Nul = (int?) null, Val = 6}};

var res = from value in sample 
          orderby value.Nul ?? value.Val
          select new {Val = value.Nul ?? value.Val};

念のため:

Console.WriteLine (typeof(int) == res.ElementAt(0).Val.GetType()); //True
Console.WriteLine (typeof(int?) == res.ElementAt(0).Val.GetType()); //False
于 2012-08-15T12:56:01.573 に答える
1

使用する

DateAdded = c.DateModified.HasValue ? c.DateModified.Value : c.DateAdded

null 許容 DateTime (c.DateModified) を null 非許容 DateTime フィールド (DateAdded) に割り当てようとしています。nullableプロパティが存在する場合は値を取得するか、別の値を使用する必要があります(あなたの場合はc.DateAdded)

于 2012-08-15T13:01:28.443 に答える