2015-08-24 81 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