简化LINQ查询?

问题描述:

我用这个LINQ查询在一个应用程序我写:简化LINQ查询?

internal int GetNoteCount(DateTime startDate, DateTime endDate) 
{ 
    var a = DataStore.ObjectContext.Notes.Where(n => n.LastRevised >= startDate); 
    var b = a.Where(n => n.LastRevised <= endDate); 
    return b.Count(); 
} 

显然,查询获取落在两个日期之间的注意事项。我想通过将前两行合并为一个来简化查询。我知道我可以使用流利的语法将Count()方法调用添加到查询的末尾。

以下是我的问题:如何合并两个查询?显然,& &运算符不能使用两个lambda表达式。谢谢你的帮助。

你可以这样做:

internal int GetNoteCount(DateTime startDate, DateTime endDate) 
{ 
    return DataStore.ObjectContext.Notes.Where(n => n.LastRevised >= startDate && n.LastRevised <= endDate).Count(); 
} 

只需使用你的条件,而不是整个拉姆达:)的&&

+0

不要忘记他正在返回.Count()。 – 2010-08-20 20:31:48

+0

@Jacob - woops,谢谢并加入:) – 2010-08-20 20:35:02

+0

谢谢!接受和+1 – 2010-08-20 20:46:23

首先,这有什么不对的& &运营商,它应该只是罚款。

var a = DataStore.ObjectContext.Notes.Where(n => n.LastRevised >= startDate && n.LastRevised <= endDate); 
return a.Count(); 

其次,LINQ,它延迟执行查询,直到.Count之间的(),所以就是你们的榜样,这一次的功能没有差异。