【发布时间】:2011-05-19 20:04:24
【问题描述】:
最初我是用这样的代码合并两组结果:
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 为空。完成 ToList 后不再合并结果。我检查了 updatedList1 并让 myMethod 始终返回 true,所以问题本质上来自于使用 ToList()。
我知道这可能与延迟执行有关,但我不知道该怎么做。应该是完全一样的。
有人有什么建议吗?
【问题讨论】:
-
尝试找到解决方案,牢记这一点,您确实加入了与遥远的内存集合!
标签: c# linq-to-sql