2013-10-24 135 views
0

我試圖做一個linq GroupJoin,並且我收到前面提到的錯誤。這是代碼參數的類型不能被推斷使用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

我懷疑這是眼前的問題:

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

我懷疑你的意思是:

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

換句話說,「這裏是正在查詢的功能和訂單,並返回一個匿名類型「。第一種語法根本沒有意義 - 即使考慮更高級的函數,通常也會有q => o => ...而不是(q => o) => ...

現在單靠它自己就不夠了......因爲GroupJoin沒有返回字典。 (的確,您甚至還沒有return聲明。)之後您將需要撥打ToDictionary。或者,最好通過ToLookup返回ILookup<string, QuoteOrderLine>

+0

感謝您的快速回復,實際上這是我帳戶上的錯字。我做了ToDictionary調用,但錯誤仍然沒有修復。同樣的錯誤。 –

+0

我發現了其餘的bug:我試圖加入基於不同類型鍵的列表。 –

相關問題