C# IQueryable的Linq语句体等效物?

C# IQueryable的Linq语句体等效物?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有这个 var total = 0; someObject.SomeCollection.SelectMany(x=> x.SomeOtherCollection.ForEach(y=>{ total = y.AnotherCollection.Sum(z=> z.Total); }); 现在我需要这样做 查询(可查询) 我意识到我不能用LINQtoSQL编写带有语句体的查询 还有别的办法吗?我想你想要的是这个 var items = Enumerable.Rang

我有这个

var total = 0;

someObject.SomeCollection.SelectMany(x=> x.SomeOtherCollection.ForEach(y=>{
   total = y.AnotherCollection.Sum(z=> z.Total);
});
现在我需要这样做

查询(可查询)

我意识到我不能用LINQtoSQL编写带有语句体的查询


还有别的办法吗?

我想你想要的是这个

var items = Enumerable.Range(0, 10).Select(i=>new { Items = Enumerable.Range(0,10).Select(j=>new { Total = j }).AsQueryable() }).AsQueryable();

var total = items.Sum(i => i.Items.Sum(j => j.Total));
)我要回答我自己的问题

相当于:

var total = 0;

someObject.SomeCollection.SelectMany(x=> x.SomeOtherCollection.ForEach(y=>{
   total = y.AnotherCollection.Sum(z=> z.Total);
});
这是:

Query.Where(x => MyTotal == (x.SomeCollection.SelectMany(y=> y.SomeOtherCollection).SelectMany(z=> z.AnotherCollection).Sum(t=> t.Total)));

谢谢大家

Linq表达式中存在的
ForEach
伤害了我的眼睛-你能用语言解释一下查询的意图吗?Linq查询不应该有副作用。如果它被编译,我会感到惊讶,因为
SelectMany
需要一个返回
IEnumerable
的委托,而
ForEach
是一个无效的方法。我不认为这是你想要的吗?您的查询返回上一个元素的总和,我认为您缺少+=。但是这不能用IQueryable.ForEach和Body表达式来完成。Tanley它可以编译和工作,filip你是对的,我缺少+。
Query.Where(x => MyTotal == (x.SomeCollection.SelectMany(y=> y.SomeOtherCollection).SelectMany(z=> z.AnotherCollection).Sum(t=> t.Total)));