我正在尝试制作一个linq GroupJoin,我收到了前面提到的错误。这是代码
public Dictionary<string, List<QuoteOrderline>> GetOrderlines(List<string> quoteNrs)
{
var quoteHeadersIds = portalDb.nquote_orderheaders
.Where(f => quoteNrs.Contains(f.QuoteOrderNumber))
.Select(f => f.ID).ToList();
List<nquote_orderlines> orderlines = portalDb.nquote_orderlines
.Where(f => quoteHeadersIds.Contains(f.QuoteHeaderID))
.ToList();
var toRet = quoteNrs
.GroupJoin(orderlines, q => q, o => o.QuoteHeaderID, (q => o) => new
{
quoteId = q,
orderlines = o.Select(g => new QuoteOrderline()
{
Description = g.Description,
ExtPrice = g.UnitPrice * g.Qty,
IsInOrder = g.IsInOrder,
PartNumber = g.PartNo,
Price = g.UnitPrice,
ProgramId = g.ProgramId,
Quantity = (int)g.Qty,
SKU = g.SKU
}).ToList()
});
}
答案 0 :(得分:0)
我怀疑这是当前的问题:
(q => o) => new { ... }
我怀疑你的意思是:
(q, o) => new { ... }
换句话说,“这是一个接受查询和订单的函数,并返回一个匿名类型”。第一种语法根本没有意义 - 即使考虑更高阶的函数,通常还是q => o => ...
而不是(q => o) => ...
。
现在这本身就不够了......因为GroupJoin
没有返回字典。 (实际上,你甚至还没有return
声明。)之后你需要ToDictionary
个电话。或者,通过ILookup<string, QuoteOrderLine>
返回ToLookup
可能更合适。