Eagle32 Ответов: 1

Группировка сложной коллекции с помощью groupby


Я имею дело со следующим результирующим набором в своем запросе. Результатом запроса является коллекция животных. Каждое животное может быть выделено более чем в одну команду.
результат запроса
ТИП ИДЕНТИФИКАТОРА TEAMCODE
2 МЛЕКОПИТАЮЩЕЕ RTB1
2 МЛЕКОПИТАЮЩЕЕ RTB2

Я могу произвести следующий вывод, но он включает только первый AnimalTeamCode RTB1
<Animal id="2">
 <AnimalTeam>
   <AnimalTeamCode>RTB1</AnimalTeamCode>
 <AnimalTeam>
<animal>



Чего я пытаюсь добиться, так это того, что для каждого животного, если оно было распределено более чем в одну команду, я хочу показать его так:
<Animal id="2">
 <AnimalTeam>
   <AnimalTeamCode>RTB1</AnimalTeamCode>
   <AnimalTeamCode>RTB2</AnimalTeamCode>
 <AnimalTeam>
<animal>


Что я уже пробовал:

в настоящее время именно так я использую оператор GroupBy
//code to get the listOfAnimals
 ......
 //Group the list of Animals
var groupedCollection = listOfAnimals.GroupBy(animal => animal.ID).ToDictionary(animal => animal.key, animal => animal.Value.ToList())


Как я могу сгруппировать результаты, чтобы достичь вышеперечисленного?

#realJSOP

Как вы можете генерировать этот результат? Это искаженный XML. Кроме того, ваши имена переменных откровенно отстой, так как мы не знаем, что такое тип "а", ни его свойства, ни почему вы используете словарь.

Eagle32

Мой XML-файл неправильно анализируется, когда я вставляю его в сообщение. Как я могу это исправить?

#realJSOP

Когда вы вставляете его, вставьте его как блок кода, и он должен автоматически определить правильный язык. Если это не так, убедитесь, что элемент "lang" имеет значение "XML".

1 Ответов

Рейтинг:
4

Ehsan Sajjad

Вы делаете это неправильно, вам нужно установить свойство Key и Value при использовании ToDictionary, просто измените вызов ToDictionary так, чтобы он был похож:

var groupedCollection = listOfAnimals.GroupBy(animal => animal.ID)
                                     .ToDictionary( group => group.Key, 
                                                    group => group.ToList()
                                                   );


Eagle32

Хорошо, спасибо.