我有以下加入声明:
var query = from holding in dHoldList
join client in clientList on
new { holding.ClientNo }
equals new { client.ClientNo } into clj
from cl in clj.DefaultIfEmpty()
join matter in matterList on
new { holding.ClientNo }
equals new { matter.ClientNo } into mlj
from ml in mlj.DefaultIfEmpty()
join stk in stockList on
new { holding.Sedol }
equals new { stk.Sedol } into slj
from sl in slj.DefaultIfEmpty()
select
new GeneralHoldingsReport()
{
ClientNo = holding.ClientNo,
Depot = holding.Depot,
HoldingSedol = holding.Sedol,
Value = holding.ValueOfStock,
NoOfUnits = holding.QuantityHeld,
ClientName = (cl == null ? null : cl.ClientName),
CountryOfResidence = (cl == null ? null : cl.CountryOfResidence),
BG = (cl == null ? null : cl.BusinessGetter),
ClientStockValue = (ml == null ? 0 : ml.FullValueOfPortfolio),
StockName = (sl == null ? null : sl.R1.Trim() + " " + sl.R2.Trim())
};
var reportList = query.ToList();
但是,当它运行时,我收到内存不足异常错误。
我要求 dHoldList 是主表,所有其他表都加入其中(即,如果与 dHoldList 中的每条记录相关的其他表中的数据匹配,则返回数据,如果不只是空白的话。)我相信我正在这样做正确,但显然不是。
这些列表中的每一个都包含大约 300k 行,除了客户端只有 30k,因此这可能会导致这里的一些问题。