Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

среда, 25 ноября 2009 г.

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);

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

Комментариев нет:

Отправить комментарий