如何将这个linq查询转换为lambda?

spr*_*t12 3 c# linq lambda

我有这个查询:

return (from r in this.Requests where r.Status == "Authorised" from i in r.Items select i).Sum(i => i.Value);
Run Code Online (Sandbox Code Playgroud)

我尝试将它转换为lambda,因为我现在更喜欢它,所以我做了:

var sum = Requests.Where(x=>x.Status == "Authorised").Select(x=>x.Items).Sum(x=>x.Value);- >这里我没有Value物品,任何想法为什么?

Jon*_*eet 5

你需要SelectMany而不是Select.您的查询基本上相当于:

return this.Requests
           .Where(r => r.Status == "Authorised")
           .SelectMany(r => r.Items)
           .Sum(i => i.Value);
Run Code Online (Sandbox Code Playgroud)

请注意,您的原始查询在多行上也会更清晰......