2012-08-15 46 views
1

我有兩列,「添加日期」和「修改日期」。Linq to SQL - 由兩個柱子排序

我想訂購所有產品的修改日期,但因爲它可以爲空我想在這種情況下添加日期。

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 

Error

+0

'c.DateModified.Value'試試這個。 – 2012-08-15 12:41:35

+1

嘗試用'DateAdded = c.DateModified.HasValue? c.DateModified.Value:c.DateAdded' – user1429080 2012-08-15 12:55:00

回答

1

嘗試刪除投(日期時間)在

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 
1

使用

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

你試圖分配可爲空的DateTime(c.DateModified)到非空的DateTime字段(DateAdded)。如果存在或使用其他值(你的情況c.DateAdded),你必須從可空屬性取值。

+0

DateAdded = c.DateModified!= null? c.DateModified.Value:c.DateAdded.Value - 這工作正常 – 2012-08-15 13:24:00