Linq: Метод var res = (Linq Expression).ToDictionary(p => p.ID) неработает с анонимными типами полученными в select выражения Linq.

Вот это работать будет

var res = (from item in SomeList
    select new SomeClass()
        {
            ID = item.Id,
        }
).ToDictionary<SomeClass, Int64>(p => p.ID);
А вот это нет
var res = (from item in SomeList
    select new
        {
            ID = item.Id,
        }
).ToDictionary(p => p.ID);

Чтоб это обойти нужно просто исопльзовать ToDictionary, принимающий два делегата Func, а не однин.
Например:
var res = (from item in SomeList
    select new
        {
            ID = item.Id,
        }
).ToDictionary(p => p.ID, p=>p);

Первый делегат вернет ключь, второй значение для словаря.

Комментарии

Популярные сообщения из этого блога

A4tech. Мышь не найдена. Пожалуйста, подсоедините мышь.

The type or namespace name 'IISOle' could not be found (are you missing a using directive or an assembly reference?)

Как экспортировать контакты из iPhone