簡體   English   中英

使用Entity Framework 6返回具有最大列值的記錄

[英]Return record with max column value using Entity Framework 6

試圖獲取ReceivedDateTime列的最大日期時間值為最大的記錄,但是數據集應通過某些Id列(不是唯一的)進行預過濾。 這樣解決:

using (var db = new SystemEntities())
{
    var records = db.Table.Where(p => p.Id == Id);
    var record = records.Where(p => p.ReceivedDateTime == records.Max(r => r.ReceivedDateTime)).FirstOrDefault();
    if(record != null)
    {

    }
}

有沒有更漂亮,更簡單和更短的實現符號? 謝謝!

您可以使用OrderByDescending簡化如下操作:

using (var db = new SystemEntities())
{
    var record = db.Table.Where(p => p.Id == Id).OrderByDescending(x => x.ReceivedDateTime).FirstOrDefault();
    if(record != null){}
}

更新

在我打開問題並嘗試結果之間,最初的答案已經確定。 很抱歉在發布之前不檢查。

更新

看到我無法發表評論,我將在側面發布答案。

上面建議的var record = db.Table.Where(p => p.Id == Id).Max(x => x.ReceivedDateTime).FirstOrDefault()不會編譯,因為Max會為您返回一個日期時間。

您可以像在SQL語句中那樣使用OrderByDescending進行操作

// I used an in memory array but it should be the same.
var item = items.Where(x => x.Id == 2).OrderByDescending(x => x.ReceivedDate).FirstOrDefault();

暫無
暫無

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

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