【发布时间】:2017-03-29 16:26:35
【问题描述】:
获取此结果列表
Date | YESorNO
---------------------
01/01/2001 | NO
01/01/2002 | NO
01/01/2003 | YES
01/01/2004 | NO
01/01/2005 | NO
01/01/2006 | NO
01/01/2007 | YES
01/01/2008 | YES
01/01/2009 | YES
列表已排序,除了降序/升序之外,我无法对其进行排序。
我希望在计算完所有“否”后能够返回第一个“是”。
在上面的例子中,第 7 行是我想要返回的记录(2007 年 1 月 1 日)
我的代码如下
var query =
(
from m in db.MyTable
where m.Criteria == XYZ
select new
{
Date = m.Date,
YESorNO = m.YESorNO
}
).OrderBy(x => x.Date);
使用.FirstOrDefault(x => x.YesOrNO == "YES") 返回第三条记录。
感谢您的帮助。
【问题讨论】:
-
必须是Linq吗?使用
foreach循环,您可以一次性轻松完成。 -
抱歉,没有迭代,因为实际查询将超过数千条记录
-
排序为 yesorno 然后得到第一个 yes,有什么问题?
-
那么我认为你需要两次通行证 - 一个找到最高的“NO”日期,一个找到该日期之后最早的“YES”值。或者使用直接 SQL 查询。
-
@AlessandroD'Andria 这正是我不想做的。这将如何给我 2007 年的记录?