简化LINQ查询?

时间:2010-08-20 20:25:01

标签: 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();
}

显然,查询会获得介于两个日期之间的Notes。我想通过将前两行合并为一个来简化查询。我知道我可以使用流畅的语法将Count()方法调用添加到查询的末尾。

这是我的问题:如何整合这两个查询?显然,&amp;&amp; operator不能使用两个lambda表达式。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

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

根据您的条件使用&&,而不是整个lambda:)

答案 1 :(得分:1)

首先,&amp;&amp;&amp;操作员,它应该工作得很好。

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

其次,使用LINQ,它会延迟执行查询,直到.Count(),因此您的示例与此示例之间没有功能差异。