Я пытаюсь использовать LINQ для создания сгруппированного списка документов на основе метаданных, которые представляют собой список в документе.
Ниже показано, как выглядит моя структура объекта:
List<Document>
--> List<Metadata>
--> Metadata has a name and a value property.
Я хочу сгруппировать документы на основе тега метаданных с именем: ID и сгруппировать их там, где значения свойства ID совпадают.
Я пробовал это так:
var x = response.Document
.GroupBy(d => d.Metadata.Where(dc => dc.Name == DocProperty.ID)
.Select(dc => dc.Value));
В результате получается список отдельных документов, но не сгруппированных по идентификатору.
Также подумал о том, чтобы выбрать отдельный список идентификаторов, а затем просмотреть список документов и найти документы, соответствующие идентификатору. Это кажется большим накладным расходом, потому что для каждого идентификатора в отдельном списке мне приходится каждый раз заходить в список метаданных и находить документы, а также выполнять дополнительные проверки для нескольких найденных элементов, получать нужное мне свойство и т. д.
У кого-нибудь есть хорошая идея о том, как заставить эту штуку работать?