【发布时间】:2011-06-22 12:08:09
【问题描述】:
我有这个查询,它在 Books、TradingDesks 和 ProductInfos 上运行一个连接。每个集合中的数据都很庞大。
var queryJoin = from b in books.Values
join d in tradingDesks.Values
on b.TradingDeskId equals d.Id
join p in ProductInfos.Values
**on b.Id equals p.RiskBookId**
select new { p, Book = b.Name, TradingDeskName = d.Name };
在突出显示的行 (on b.Id equals p.RiskBookId) 中,我还想添加另一个条件,例如 (on b.Id equals p.RiskBookId || p.RiskBookId == 0) 。我如何在这个 linq 语法中做到这一点。
我试过这样查询
var queryJoin = from b in books.Values
from d in tradingDesks.Values.Where(x => x.Id == b.TradingDeskId)
from p in cachedProductInfos.Values.Where(y => y.RiskBookId == b.Id)
select new { p, Book = b.Name, TradingDeskName = d.Name };
但在这种情况下,查询将永远运行,并且内存不足。所以我想以这种方式构建它会很疯狂:(
感谢任何帮助。
谢谢 玛尼
【问题讨论】:
-
这似乎完全是 linq-to-objects,我看不出 linq-to-sql 适合的位置
标签: c# .net linq linq-to-sql linq-to-objects