I предположим, что ваша структура данных составляет минимум:
class MyType //or struct
{
long ID;
};
Вы хотите получить список:
List<MyType> list;//with instances of MyType
либо с различными экземплярами MyType и тот же идентификатор (делает ID неуникальным, не лучший дизайн, возможно,) или некоторые экземпляры в списке несколько раз, то, что кажется лучшим примером, но либо будет работать для заданного вопроса.
Теперь, GroupBy, что он делает? Список
List<MyType>
превращается в
IEnumerable<MyType>
затем GroupBy (х => х.ID) группирует и обеспечение:
IEnumerable<IGrouping<long, MyType>>
таким образом мы получаем элементы
IGrouping<long, MyType>
Теперь IGrouping знает все IEnumerable делает, наследование интерфейса, плюс он имеет ключ. Так что если вы хотите, чтобы ваш ожидаемый словарю типа:
Dictionary<long,IEnumerable<MyType>>
вы должны сделать это:
var dictionary =
list
.GroupBy(x => x.ID)
.ToDictionary(x => x.ID, x => x.AsEnumerable())
;
ToDictionary позволяет выбрать ключ от элементов, а также позволяет преобразовывать значение, сохраненное для данного ключа, поэтому мы может использовать этот подход и позвонить по телефону
x.AsEnumerable()
как IGrouping наследуется от IEnumerable.
Надеюсь, что это более длинное объяснение поможет :).
Вы попробовали x.Key? –
x.Key, FTW ..... – code4life
Можете ли вы включить структуру ввода и вывод, который вы ожидаете? – XtremeBytes