【发布时间】:2011-02-16 14:43:43
【问题描述】:
必须有一个单线才能做到这一点,但我就是找不到。
给定这个查询:
from x in new XPQuery<XPContent>(s)
select new { x.Category, x.ContentType, x.Name, x.ContentID, x.Date }
我需要为每个不同的 ContentID 选择日期最长的记录。这可以用 LINQ 巧妙地完成吗?现在我正在这样做:
var q = (from x in new XPQuery<XPContent>(s)
select new { x.Category, x.ContentType, x.Name, x.ContentID, x.Date }).ToList();
var r = q.ToLookup(item => item.ContentID);
foreach (var rItem in r) {
var s = rItem.OrderByDescending(a => a.Date).First();
/* do stuff with s */
}
...但是 ToLookup 感觉有点笨拙。还是我有最好(最简单)的解决方案?
另外,我知道我不应该使用 ToList,但请暂时忽略它。
提前致谢!
【问题讨论】: