【发布时间】:2012-08-23 17:03:50
【问题描述】:
我正在编写一个在OrderBy 查询之后使用FirstOrDefault 的查询,它应该首先检查它是否不为空,然后使用其中的一些数据。有没有比这样写更好的方法:
int count = db.Items.Count(i =>
i.Assignments.OrderByDescending(a =>
a.DateAssigned).FirstOrDefault() != null
&&
i.Assignments.OrderByDescending(a =>
a.DateAssigned).FirstOrDefault().DateReturned == null)
这段代码的作用是有些项目有很多分配,我按日期获取最新的分配,然后检查它是否存在,然后对属性运行条件 (DateReturned)。如您所见,这个查询很长,我的大多数查询看起来像这样,我首先检查 null 然后使用它们的属性对其运行第二个查询。有更好的方法吗?
【问题讨论】:
-
什么是
itemsQuery?基本上,这是在 LINQ to Objects 中还是其他什么? -
当您确实有长的 LINQ 查询时,您可以在其中添加一些换行符以使其真正可读...
-
还有一些缩进也不错。
-
如果您使用 VB.NET,则不需要执行 .OrderByDes 并包含谓词,您只需使用 OrderBy 保留关键字后跟 ASC 或 DES 保留关键字,然后说“什么都没有”而对于第二部分“IsNot Nothing”,更漂亮:)
标签: c# linq entity-framework