鉴于
List<Foo> foos;
public class Foo
{
public string Name { get; set; }
public List<Bar> Bars { get; set; }
}
public class Bar
{
public double Score { get; set; }
}
我正在尝试为foos
中的每个对象输出属性Foo.Name以及最大Bar.Score。我看到如何获得最高分:
foos.SelectMany(f => f.Bars).MaxBy(b => b.Score).Select(b => b.Score);
有没有办法获得相应的名称,而不需要将Bar的引用添加回Foo?如果我做了以下更改
public class Bar
{
public Foo Foo { get; set; } // Can't really add this
public double Score { get; set; }
}
我能做到
foos.SelectMany(f => f.Bars).MaxBy(b => b.Score)
.Select(b => new { Name = b.Foo.Name, Score = b.Score) });
但是在实际情况下,我无法添加后退参考。
答案 0 :(得分:1)
您无需使用SelectMany
,只需将Select
与Max
一起使用:
var result = foos
.Select(f => new
{
Name = f.Name,
MaxScore = f.Bars.Max(b => b.Score)
});