gpt4 book ai didi

c# - 使用 LINQ 从子列表中选择最大值

转载 作者:行者123 更新时间:2023-11-30 20:11:00 25 4
gpt4 key购买 nike

如何编写一个 LINQ 查询,该查询将返回具有最大日期和该日期的最大值的“值”类型的行。它应该是 name = "Correct"

我在最后写了一个查询,它起作用了,只是想找到一个正确的方法。

提前致谢

public class MeasurePoint
{
public int No { get; set; }
public string Weight { get; set; }
public List<Values> Vals { get; set; }
}

public class Values
{
public string Name { get; set; }
public int Val { get; set; }
public DateTime Date { get; set; }
}

public static class Test
{
public static void Calc()
{
var mps = new List<MeasurePoint>();

mps.Add(new MeasurePoint()
{
No = 1,
Vals = new List<Values>()
{
new Values(){Date = DateTime.Now.Date.AddDays(1), Name = "testas", Val = 1},
new Values(){Date = DateTime.Now.Date.AddDays(2), Name = "testas", Val = 5},
new Values(){Date = DateTime.Now.Date, Name = "testas", Val = 15}
}});
mps.Add(new MeasurePoint()
{
No = 2,
Vals = new List<Values>()
{
new Values(){Date = DateTime.Now.Date, Name = "testas", Val = 11},
new Values(){Date = DateTime.Now.Date.AddDays(2), Name = "Correct", Val = 55},
new Values(){Date = DateTime.Now.Date, Name = "testas", Val = 15}
}
});
mps.Add(new MeasurePoint()
{
No = 3,
Vals = new List<Values>()
{
new Values(){Date = DateTime.Now.Date.AddDays(1), Name = "testas", Val = 111},
new Values(){Date = DateTime.Now.Date.AddDays(2), Name = "testas", Val = 52},
new Values(){Date = DateTime.Now.Date, Name = "testas", Val = 15}
}
});

mps.Add(new MeasurePoint()
{
No = 4,
Vals = new List<Values>()
});

var x = mps.ElementAt(0).Vals.Union(mps.ElementAt(1).Vals).Union(mps.ElementAt(2).Vals);
var z = x.Where(p => p.Date == x.Max(d => d.Date)).MaxBy(t=>t.Val);

//One more way I've found
var ttt = mps.SelectMany(p => p.Vals).GroupBy(t=>t.Date).MaxBy(r=>r.Key).MaxBy(g=>g.Val);
}

最佳答案

var max = mps.SelectMany(x => x.Vals)
.Aggregate((a, x) => (x.Date > a.Date) ||
((x.Date == a.Date) && (x.Val > a.Val)) ? x : a);

关于c# - 使用 LINQ 从子列表中选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com