2013-10-24 3 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. В качестве альтернативы, может быть более целесообразным вернуть ILookup<string, QuoteOrderLine> через ToLookup.

+0

Благодарим за быстрый ответ, действительно, это была опечатка на моем аккаунте. Я сделал вызов ToDictionary, но ошибка все еще не исправлена. Такая же ошибка. –

+0

Я нашел оставшуюся ошибку: я пытался присоединиться к спискам на основе ключей разных типов. –

Смежные вопросы