Выберите отдельный список из вложенных коллекций в нескольких полях - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь получить отдельный список вложенных объектов из коллекции, используя LINQ.

Пожалуйста, проверьте ниже сценарий

У меня есть список ClientAccounts , на каждом клиентском счете есть список Holdings , и в каждом холдинге есть Инструмент Тип. Я пытаюсь получить уникальный список инструментов из списка учетных записей клиентов.

Пока что я пробовал с приведенным ниже запросом, но он возвращает все инструменты. clientAcccounts - список учетных записей клиентов.

List<Instrument> lstclientInstrument = clientAcccounts
                                          .SelectMany(x => x.Holdings)
                                          .Select(s => new Instrument { 
                                                          InstrumentID = s.Instrument.InstrumentID, 
                                                          AssetTypeID = s.Instrument.AssetTypeID 
                                                       })
                                          .Distinct()
                                          .ToList();

Любое предложение получить отдельный список.

1 Ответ

0 голосов
/ 05 мая 2018

Попробуйте эту группу с несколькими ключами.

List<Instrument> ins = clientAcccounts.SelectMany(x => x.Holdings.Select(s => s.Instrument)).ToList().GroupBy(p=> new {p.InstrumentID,p.AssetTypeID},(key,group)=>group.First()).ToList<Instrument>();
...