2013-02-19 112 views
0

我想對具有StartTime特性的對象列表執行以下查詢。問題是,有時可以創建值爲null執行Linq查詢時的時間距離條件計算

那麼,我該如何檢查值是否爲null,以及它是否在2個值之間執行一個隨機數?

var myOtherQuery = db.Table.Select(e=> e); 

var myQuery = myOtherQuery.Select(e => new { e, TimeDistance = ((DateTime) e.StartTime - DateTimeNow).TotalMinutes }); 

這是L2SQL * 某些對象在開始時間空值,這導致一個例外,而試圖確定的該TimeDistance *

+1

哪裏是空值發現了什麼?你的意思是有時StartTime爲空?您可以檢查C#中的值使用??運算符 – TheKingDave 2013-02-19 15:49:20

+1

這是LINQ to SQL,LINQ to Objects,Entity Framework,還有其他什麼? – 2013-02-19 15:49:22

回答

1

你的意思是這樣的嗎?

var myQuery = myOtherQuery.Select(e => 
    new { E = e, 
      TimeDistance = ((e.StarTime.HasValue ? e.StartTime.Value : someOtherValue) - DateTime.Now).TotalMinutes 
    } 
); 

或者:

var myQuery = myOtherQuery.Select(e => 
    new { E = e, 
      TimeDistance = (e.StarTime.HasValue ? (e.StartTime.Value - DateTime.Now) : someOtherValue).TotalMinutes 
    } 
); 
+0

看來是這樣,讓我檢查!謝謝 – Lothre1 2013-02-19 15:54:51

+0

這種評估存在一個小問題。因爲我不想用DateTime.Now減去一些其他值。 換句話說,我希望它是((StartTime和DateTime.Now)之間的計算的替代結果).TotalMinutes – Lothre1 2013-02-19 16:06:43

+0

好的 - 請參閱編輯:-) – chris 2013-02-19 16:15:35