代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

简化LINQ查询?

  •  1
  • David Veeneman  · 技术社区  · 14 年前

    我在正在编写的应用程序中使用此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表达式。谢谢你的帮助。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Nick Craver    14 年前

    您可以这样做:

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

    只使用 && 在你的条件下,不是整个lambda:)

        2
  •  1
  •   Jacob Proffitt    14 年前

    首先,运营商没有任何问题,应该可以正常工作。

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

    其次,对于Linq,它将延迟执行查询,直到.count(),这样您的示例和这个示例之间就没有功能上的区别。