2015-08-24 117 views
-2
DateTime    ChangedBy  ChangedColumn OldVal NewVal 
08/24/2015 08:50:27 AM [email protected] lastname  John  Doe 
08/24/2015 08:50:27 AM [email protected] lastname  NULL  Doe 
08/25/2015 05:40:27 AM [email protected] lastname  Jane  Doe 
08/25/2015 05:40:27 AM [email protected] lastname  NULL  Doe 
08/25/2015 04:40:27 AM [email protected] lastname  NULL  Doe 

如何使用LINQ我刪除OLDVAL柱空行? 這裏的挑戰是我需要排(08/25/2015 04:40:27 AM)也。LINQ的過濾器根據空列值

+0

所以你需要非空行,而行從最早的日期時間?您的查詢的規格是什麼? –

+0

準確地說,我的結果只能包含1,3和5行。 – John

+0

所以,如果我讀到一個數組,並挑出索引[0,2,4],這將適用於所有類似的查詢? ;)這個例子中第5行有什麼特別之處?它是否在凌晨4點到5點之間? –

回答

0

應該是:

var minValue = aList.Min(row => x.DateTime); 
aList = aList.Where(row => row.OldVal != NULL 
         || row.DateTime == minValue) 
      .ToList(); 
+0

更新的實際問題 – John

+0

舊值不能也爲NULL。這裏第一行有獨特的時間應該包括在內,因爲它是一個特殊的事件發生在不同的時間 – John

+0

修復包括最小(日期時間)行 –

0

下面應該工作:

var specialRow = table.Where(row => IsSpecial(row.DateTime)); 
var result = (from row in table 
      where row.OldVal.HasValue 
      select row) 
     .Union(specialRow); 
+0

更新了實際問題 – John

+0

好的。他們都是事件發生的順序。這裏不能做工會。 – John