Linq声明体相当于IQueryable?

时间:2016-10-28 21:09:30

标签: c# linq linq-to-sql

我有这个

var total = 0;

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

现在我需要这样做,

查询(IQueryable)

Query.Where(x => MyTotal == (x.SomeCollection.SelectMany.. just as above and returns the Total)).

我意识到我不能用linq中的语句体写一个查询到sql。

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

)回答我自己的问题。

相当于:

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)));

谢谢大家!

答案 1 :(得分:-1)

我认为你想要的是这个

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));