2016-08-29 3 views
0

У меня есть класс, давайте назовем его MyClass, с общественным полем типа IList<AnotherType>:Использование Linq для группы объектов, которые содержат поле списка

class MyClass 
{ 
    public IList<AnotherType> MyListProperty {get;} 
} 

У меня также есть список объектов MyClass в моем приложении :

list = new List<MyClass>(); 

Я хочу, чтобы получить группу из этого «списка», в частности, IOrderedEnumerable<IGrouping<MyClass,AnotherType>> с помощью Linq, который будет использоваться в качестве источника к CollectionViewSource и будет показана пользователю в виде сгруппированных ListView. Как я могу это сделать?

Другими словами, я хочу объединить «список» в сгруппированный перечислимый с ключами MyClass, а значениями являются MyClass.MyListProperty.

+0

Попробуйте отредактировать с примером, теперь это немного запутанно. –

ответ

0

Если я правильно понимаю твой, вы ищете что-то вроде этого:

list.SelectMany(x => x.MyListProperty.GroupBy(y => x)); 

Это возвращает IEnumerable<IGrouping<MyClass, AnotherType>>. Чтобы сделать это IOrderedEnumerable, вам нужно добавить .OrderBy(x => x.SomeOrderingProperty); в конец.

+0

Это именно то, что я хотел, спасибо! Извините, это было очень сложно объяснить, но вам все же удалось понять ... –