我已經在這里待了好幾天了,但仍然找不到有效的 linq 查詢。任何人都可以幫助我查詢如何獲取最新版本的專案并將它們放入串列中。資料結構看起來像這樣
name | version
john | 1.2.35
john | 1.3
karen| 2.0
sora | 1.1.36
輸出應該是
name | version
john | 1.3
karen| 2.0
sora | 1.1.36
到目前為止我有這個代碼
var packages = _readOnlyContext.Names.AsEnumerable().Select(x => new Names
{
Name = x.Name,
Version = x.Version.ToString()
});
uj5u.com熱心網友回復:
出于測驗目的,使用了 Jonathan 的部分代碼。
您可以使用
uj5u.com熱心網友回復:
嘗試這個
var result= _readOnlyContext.Names.GroupBy(l => l.Name)
.Select(g => g.OrderByDescending(c => c.Version).FirstOrDefault())
.ToList();
或者如果您有很多屬性,但只需要 2 個
var result= _readOnlyContext.Names
.Select(x => new {
Name = x.Name,
Version = x.Version.ToString()
})
.GroupBy(l => l.Name)
.Select(g => g.OrderByDescending(c => c.Version).FirstOrDefault())
.ToList();
uj5u.com熱心網友回復:
只需使用GroupBy和OrderByDescending:
var packages = _readOnlyContext.Names.AsEnumerable()
.OrderByDescending(o=> o.Version)
.GroupBy(x=> x.Name)
.Select(x=>
new Names
{
Name = x.Key,
Version = x.FirstOrDefault(c=> c.Name == x.Key)?.Version.ToString()
}).ToList();
uj5u.com熱心網友回復:
你可以試試這個
var result = _readOnlyContext.Names
.GroupBy(s => s.Name)
.Select(g => new
{
Name = g.Key,
Version = g.Select(s => s.Version).Max()
}).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/313333.html
上一篇:EF核心遷移
下一篇:從資料庫中洗掉列不會在專案中出錯
