我有一个表,为了示例,我们可以说它有三列:Name,DateAdded,Note。在此表中将有多个具有相同名称的记录。我需要一个linq where子句来获取每个名称最新记录的结果集。
所以,如果我有以下信息:
Name, DateAdded, Note
Alpha, 1/1/2010, note one
Alpha, 1/2/2010, note two
Alpha, 1/3/2010, note three
Beta, 1/4/2010, note four
Beta, 1/5/2010, note five
我希望得到以下结果:
Name, DateAdded, Note
Alpha, 1/3/2010, note three
Beta, 1/5/2010, note five
在实际使用中,这将是一个搜索选项,所以我需要它作为.Where子句,如果可能,我可以附加到IQueryable集合。
答案 0 :(得分:0)
from row in rows
group row by row.Name into grouping
from g in grouping
where g.DateAdded == grouping.Max(x => x.DateAdded)
select g;
如果某个组中有多个最大DateAdded
的行,则会返回所有这些行。
您不需要只有一个Where
子句。如果rows
是IQueryable
,则此查询的结果也是如此,因此您可以将其用作链的一部分。但我不知道这个查询有多好转化为SQL。