簡體   English   中英

使用LINQ to Entities選擇最新記錄

[英]Select most recent records using LINQ to Entities

我有一個簡單的Linq to Enities表來查詢並使用Date字段獲取最新的記錄

所以我嘗試了這段代碼:

IQueryable<Alert> alerts = GetAlerts();
IQueryable<Alert> latestAlerts =
    from a in alerts
    group a by a.UpdateDateTime into g
    select g.OrderBy(a => a.Identifier).First();

錯誤:NotSupportedException:不支持方法“GroupBy”。

有沒有其他方法可以做到這一點? 非常感謝!

我有類似的需求。 我希望得到鍵入的記錄,而不是一個新的匿名對象。 要做到這一點。第一個()可以幫助。

var query = from alert in m_alerts
        group alert by alert.Identifier into a
        select a.OrderByDescending(g => g.UpdateDateTime).First();

使用OrderByDescending對它們進行排序,並使用First()進行排序。 您已按標識符對它們進行分組,因此您應該只獲取每個標識符的最新記錄。

如果沒有理由對其進行分組,您可以稍微切換一下查詢:

IQueryable<Alert> alerts = GetAlerts();
IQueryable latestAlerts = alerts.OrderByDescending(a => a.UpdateDateTime);

它應該是

IQueryable<Alert> latestAlerts =
    (from a in alerts
    group a by a.UpdateDateTime into g
    order by g.Key
    select g).First();

Linq-to-Entities肯定支持GroupBy

所以答案是:

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) 
          };

這將返回最新的記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM