如何以另一个 .SelectMany() 形式编写此 LINQ 表达式?
var result =
from a in numbersA
where a < 3
from b in numbersB
where b < 5
select new { a, b };
?
var result = numbersA.Where(x => x < 3).Select
..?
最佳答案
这是编译器将执行的操作的粗略翻译:
var result = numbersA.Where(a => a < 3)
.SelectMany(a => numbersB, (a, b) => new { a, b })
.Where(z => z.b < 5)
.Select(z => new { z.a, z.b });
现在您可以更有效地编写它:
var result = numbersA.Where(a => a < 3)
.SelectMany(a => numbersB.Where(b => b < 5),
(a, b) => new { a, b });
...但这不是编译器会做的。目前尚不清楚您的目标是查看编译器执行的操作,还是仅编写查询。
关于LINQ 扩展方法 .SelectMany() 以另一种形式编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12958442/