0

我正在尝试创建一个 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()
         });           
 }
4

1 回答 1

0

我怀疑这是直接的问题:

(q => o) => new { ... }

我怀疑你的意思是:

(q, o) => new { ... }

换句话说,“这是一个接受查询和订单并返回匿名类型的函数”。第一种语法根本没有意义——即使考虑更高阶的函数,你通常会使用q => o => ...而不是(q => o) => ....

现在这还不够……因为GroupJoin不返回字典。(实际上,您甚至还没有return声明。)在那之后您将需要一个ToDictionary电话。ILookup<string, QuoteOrderLine>或者,返回via可能更合适ToLookup

于 2013-10-24T14:10:26.060 回答