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. Мышь не найдена. Пожалуйста, подсоедините мышь.

SVN: Пропали иконки TortoiseSVN.

Вывод в cmd или bat пустой строки.