感谢this的帮助。
试了这个,没有运气..
我知道
from f in list
where f.bar == someVar
select f
可以写成
list.Where( f => f.bar == someVar );
可以从
创建类似的表达式from f in foo
from b in f.bar
where b.something == someVar
select f;
编辑: 对不起,我忘了第二个例子中的f.bar是一个对象列表。
答案 0 :(得分:4)
当然。查询语法只是一种语法糖。它将由编译器转换为基础lambda语法,因此每个查询表达式都具有等效的基于lambda的表示。
这可能就是您所需要的(这并不完全等同于此,但只有一个bar
与每个foo
中的查询匹配时才有效:
var result = foo.Where(f => f.bar.Any(b => b.something == someVar));
严格等效的版本是:
var result = foo.SelectMany(f => f.bar, (f, b) => new { F = f, B = b })
.Where(x => x.b.something == someVar)
.Select(x => x.f);