我必須從串列中顯示按 GoodsCode 分組的電影,然后在每個商品上獲取 ChangeDate 的最大值。
TABLE - GOODS_TABLE
GOODS_CODE GOODS_PRICE CHANGE_DATE GOODS_PART
8800 1000 20220911 1
8800 1200 20220914 1
8801 1300 20220928 2
8801 1500 20220929 2
8802 1300 20220916 3
8802 1500 20221001 3
8802 2400 20221004 3
例如,在這種情況下,我想從 GOODS_TABLE 中獲取它,比如
GOODS_CODE GOODS_PRICE CHANGE_DATE GOODS_PART
8800 1200 20220914 1
8801 1500 20220929 2
8802 2400 20221004 3
在這種情況下,
from p in goods
group p by { p.goods_code, p.goods_price, p.change_date, p.goods_part } into g
select (goods_code: g.Key.goods_code, goods_price: g.Key.goods_price, goods_part : g.Key.goods_part, change_date: g.Max(p => p.change_date));
我想知道我是否應該像上面那樣把我想帶的所有專欄都帶上。
Linq還有其他方法嗎?
uj5u.com熱心網友回復:
嘗試這個
var result = goods.GroupBy(x => x.goods_code).Select(x => x.MaxBy(y => y.change_date));
例子:
class Goods
{
public int GoodsCode { get; set; }
public int GoodsPrice { get; set; }
public int ChangeDate { get; set; }
public int GoodsPart { get; set; }
public Goods(int goodsCode, int goodsPrice, int changeDate, int goodsPart)
{
GoodsCode = goodsCode;
GoodsPrice = goodsPrice;
ChangeDate = changeDate;
GoodsPart = goodsPart;
}
}
var goods = new List<Goods>
{
new Goods(8800, 1000, 20220911, 1),
new Goods(8800, 1200, 20220914, 1),
new Goods(8801, 1300, 20220928, 2),
new Goods(8801, 1500, 20220929, 2),
new Goods(8802, 1300, 20220916, 3),
new Goods(8802, 1500, 20221001, 3),
new Goods(8802, 2400, 20221004, 3)
};
var eachMax = goods.GroupBy(x => x.GoodsCode).Select(x => x.MaxBy(y => y.ChangeDate));
eachMax.ToList().ForEach(x =>
Console.WriteLine($"{x.GoodsCode} {x.GoodsPrice} {x.ChangeDate} {x.GoodsPart}"));
// 8800 1200 20220914 1
// 8801 1500 20220929 2
// 8802 2400 20221004 3
uj5u.com熱心網友回復:
嘗試這個
var result = goods.GroupBy(g => g.goods_code)
.SelectMany(s => s.OrderByDescending(d => d.change_date)
.Take(1));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522819.html
標籤:C#甲骨文林克
上一篇:如何在LINQ中使用嵌套的“CASEWHENTHENEND”
下一篇:如何查看LINQ生成的原始查詢?
