本来我是合并两组结果有这样的代码:当我做ToList()时,为什么这个LINQ to SQL查询会中断?
var list1 = from a in IDataSourceObject
blahblah
select a;
var list2 = from a in IDataSourceObject2
blahblah
select a;
var joinedlist = from a in list1
join b in list2 on a.id = b.id
into fishcakes
from b in fishcakes.DefaultIfEmpty()
orderby b.ranking
select new { blah=cakes, etc. }
这用来做工精细,但后来我想过滤列表1多一点,所以我这样做:
var list1 = from a in IDataSourceObject
blahblah
select a;
// ToList required because im calling a method in my code
var updatedList1 = from a in list1.ToList()
where myMethod(somestuff) == true
select a;
var list2 = from a in IDataSourceObject2
blahblah
select a;
var joinedlist = from a in updatedList1
join b in list2 on a.id = b.id
into fishcakes
from b in fishcakes.DefaultIfEmpty()
orderby b.ranking
select new { blah=cakes, etc. }
但是我收到一个错误,基本上说OrderBy b.ranking为null。在完成ToList之后,它不再合并结果。我已经检查updatedList1,并且我让myMethod总是返回true,所以本质上来自使用ToList()的问题。
我明白这可能与延迟执行有关,但我不知道怎么做。它应该完全一样。
有没有人有任何建议?
试图找到考虑到这一点,你与远方的一个连接的记忆中珍藏的解决方案! – 2010-12-03 16:05:02