當我運行此運算式時,我可以看到串列順序按最高 ActionId 的順序正確
var list = db.Actions.Where(z => z.RunId
== RunId).OrderByDescending(w =>
w.ActionId).ToList();
我只想選擇每個ActionName 的最高 ActionId,所以我現在這樣做:
var list = db.Actions.Where(z => z.RunId
== RunId).OrderByDescending(w =>
w.ActionId).GroupBy(c => new
{
c.ActionName,
c.MachineNumber,
})
.Select(y =>
y.FirstOrDefault()).ToList();
當我查看串列的內容時,它沒有選擇具有最高 ActionId 的 ActionName/MachineNumber,我認為這是通過排序然后使用 FirstOrDefault() 來實作的。
知道我哪里出錯了嗎?我想按 ActionName 和 MachineId 對記錄進行分組,然后為每個組選擇具有最高 ActionId 的記錄
uj5u.com熱心網友回復:
不要對有序集合進行分組,而是先對集合進行分組,然后為每個組選擇具有最高 ID 的記錄。GroupBy不能保證在 LINQ to SQL 中保留每個組中的順序 - 這取決于您的資料庫服務器。
var list = db.Actions.Where(z => z.RunId == RunId).GroupBy(c => new
{
c.ActionName,
c.MachineNumber,
})
.Select(y => y.OrderByDescending(z => z.ActionId).FirstOrDefault()).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490706.html
