Вот мой LINQ запрос:Возникли проблемы с Group By в LINQ
var results = from l in leads
from qr in l.QuoteRevisions
from rp in qr.RevisionProducts
select new QuoteSearchItem
{
ID = l.ID,
....
ProductCodes = l.QuoteRevisions.SelectMany(qr => qr.RevisionProducts)
.Select(p => p.Product.ProductCode).ToList()
};
Объект мы пытаемся заполнить выглядит так:
public class QuoteSearchItem
{
public LeadID {get; set; }
....
public List<string> ProductCodes { get; set; }
....
}
Результаты я получаю являются почти точный. Но проблема в том, что, когда имеется более одного кода продукта, я получаю одинаковые строки для каждого вывода. Так что вместо получения этого:
{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}
я получаю это:
{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}
{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}
Итак, мне нужно Group By l.LeadID. Но у меня возникают проблемы с этим синтаксисом. Я пробовал это:
var results = from l in leads
from qr in l.QuoteRevisions
from rp in qr.RevisionProducts
group l by l.ID into lds
select new QuoteSearchItem
{
ID = lds.ID,
....
ProductCodes = lds.QuoteRevisions.SelectMany(qr => qr.RevisionProducts)
.Select(p => p.Product.ProductCode).ToList()
};
Но тогда «lds» не видит ничего. Не знаете, как это сделать.
Спасибо!
Спасибо! Я боролся с этим часами! –