回答
所以答案是:
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. LINQ到實體只有記錄選擇
- 5. LINQ到實體選擇查詢錯誤
- 6. LINQ到實體 - 動態選擇指定
- 7. 篩選使用LINQ實體
- 8. 使用Linq選擇實體,鏈接實體,鏈接實體的列表
- 9. WPF使用LINQ到實體
- 10. LINQ實體框架選擇記錄
- 11. LINQ實體嵌套選擇填充
- 12. 從LINQ中選擇兩個實體
- 13. LINQ的選擇tablemapping(實體框架)
- 14. 選擇寬度實體框架和LINQ
- 15. 爲特定實體選擇屬性LINQ
- 16. C#linq選擇一些實體
- 17. LInq實體選擇新的COUNT,其中
- 18. 選擇屬性實體ef linq
- 19. Linq選擇頂級1相關實體
- 20. 如何選擇使用LINQ to Entity的遞歸嵌套實體
- 21. 使用LINQ(實體框架)從表中選擇列值
- 22. 如何使用實例類中選擇身體LINQ
- 23. LINQ到實體
- 24. LINQ到實體
- 25. LINQ到實體:
- 26. 如何選擇通過LINQ的(實體框架)選擇
- 27. 選擇使用LINQ
- 28. 選擇使用LINQ
- 29. 選擇使用LINQ
- 30. 選擇使用linq
按日期時間分組沒有意義。如果分辨率是毫秒,那麼你不可能有一個組中有多個項目。或者這真的是日期字段? – 2010-05-03 21:20:01