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 に答える