回答
所以答案是:
var query =
from alert in m_alerts
group alert by alert.Identifier
into g
select new
{
GroupIdentifier = g.Key,
UpdateDateTime = g.Max(p => p.UpdateDateTime)
};
这将返回最近的记录。
如果没有一个理由组,你可能只是切换您的查询了一点:
IQueryable<Alert> alerts = GetAlerts();
IQueryable latestAlerts = alerts.OrderByDescending(a => a.UpdateDateTime);
这将在查询时将整个数据库加载到内存中... – 2010-05-03 21:09:05
@BlueRaja - 实际上它不会执行任何操作。直到你对像.First()或.Take(10)这样的latestAlerts做些什么之后,才会发生数据库命中。 – 2010-05-03 21:18:09
@hightechrider:因此,“当被查询时”...大概,海报正在寻找一个完整的答案。 – 2010-05-03 21:19:42
应该
IQueryable<Alert> latestAlerts =
(from a in alerts
group a by a.UpdateDateTime into g
order by g.Key
select g).First();
GroupBy
肯定是通过LINQ到支持-Entities
我有类似的需求。我想要返回类型化记录,而不是新的匿名对象。要做到这一点.First()可以提供帮助。
var query = from alert in m_alerts
group alert by alert.Identifier into a
select a.OrderByDescending(g => g.UpdateDateTime).First();
使用OrderByDescending命令对它们进行排序,并使用First()将其排在第一位。你已经用你的标识符对它们进行了分组,所以你只应该得到每个标识符的最新记录。
不得不使用FirstOrDefault(),但是很好用。 – Joshua 2014-05-29 15:56:06
- 1. LINQ选择(使用实体框架)
- 2. 筛选使用LINQ实体
- 3. 使用Linq选择实体,链接实体,链接实体的列表
- 4. C#linq选择一些实体
- 5. 选择宽度实体框架和LINQ
- 6. 为特定实体选择属性LINQ
- 7. 从LINQ中选择两个实体
- 8. LINQ实体框架选择记录
- 9. LINQ的选择tablemapping(实体框架)
- 10. Linq选择顶级1相关实体
- 11. LINQ实体嵌套选择填充
- 12. 如何选择使用LINQ to Entity的递归嵌套实体
- 13. 如何使用实例类中选择身体LINQ
- 14. LINQ到实体
- 15. LINQ到实体
- 16. 选择使用linq
- 17. 选择使用LINQ
- 18. 选择使用LINQ
- 19. 选择实体
- 20. 选择从数据库使用LINQ到实体的最新条目
- 21. LINQ到实体查询随机行选择
- 22. LINQ到实体:多对多在一个单一的选择
- 23. Linq到实体框架选择整个表
- 24. LINQ到实体基于分项中选择记录
- 25. LINQ到实体中选择项目,并给予编号
- 26. 使用Linq到实体的盒装值
- 27. 插入使用LINQ到实体
- 28. 使用LAMBDA。选择()与实体框架
- 29. 使用实体框架选择范围
- 30. 使用JPA选择非实体?
按日期时间分组没有意义。如果分辨率是毫秒,那么你不可能有一个组中有多个项目。或者这真的是日期字段? – 2010-05-03 21:20:01