Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 在引用父对象时选择Many_Linq - Fatal编程技术网

Linq 在引用父对象时选择Many

Linq 在引用父对象时选择Many,linq,Linq,给定 有没有一种方法也可以获得相应的名称,而不必将引用从Bar添加回Foo?如果我做了以下改变 foos.SelectMany(f => f.Bars).MaxBy(b => b.Score).Select(b => b.Score); 我可以 public class Bar { public Foo Foo { get; set; } // Can't really add this public double Score { get; set; } }

给定

有没有一种方法也可以获得相应的名称,而不必将引用从Bar添加回Foo?如果我做了以下改变

foos.SelectMany(f => f.Bars).MaxBy(b => b.Score).Select(b => b.Score);
我可以

public class Bar
{
    public Foo Foo { get; set; } // Can't really add this
    public double Score { get; set; }
}

但是在实际情况中,我不能添加back引用。

您不需要使用
SelectMany
,只需使用
Select
Max

foos.SelectMany(f => f.Bars).MaxBy(b => b.Score)
    .Select(b => new { Name = b.Foo.Name, Score = b.Score) });

为什么不干脆
foos.Select(f=>new{Name=f.Name,MaxScore=f.bar.Max(b=>b.Score)}
foos.SelectMany(f => f.Bars).MaxBy(b => b.Score)
    .Select(b => new { Name = b.Foo.Name, Score = b.Score) });
var result = foos
    .Select(f => new 
    { 
        Name = f.Name, 
        MaxScore = f.Bars.Max(b => b.Score) 
    });