2010-03-30 5 views
1

В Linq Dynamic Query, Скотт Гатри показывает пример Linq запрос:Простой Linq Dynamic Query вопрос

var query = 
    db.Customers. 
    Where("City == @0 and Orders.Count >= @1", "London", 10). 
    OrderBy("CompanyName"). 
    Select("new(CompanyName as Name, Phone)"); 

Уведомление проекция new(CompanyName as Name, Phone). Если у меня есть класс вроде этого:

public class CompanyContact { 
    public string Name {get;set;} 
    public string Phone {get;set;} 
} 

Как я мог по существу «бросить» его результат, используя тип данных CompanyContact, не делая Еогеасп на каждую запись и сброс его к другой структуре данных? Насколько мне известно, единственным доступным является доступная версия Dymanic Query, которая принимает только строку и список параметров.

ответ

4

Как я могу видеть из статьи, которую вы цитируете, методы динамического запроса возвращают объекты IQueryable <>, что означает, что нормальный Select() должен быть доступен.

var query = 
    db.Customers. 
    Where("City == @0 and Orders.Count >= @1", "London", 10). 
    OrderBy("CompanyName"). 
    Select(c => new CompanyContact {Name = c.CompanyName, c.Phone}); 

Вы, возможно, придется явно задать тип для Select

Select<Customer>(c => new CompanyContact {Name = c.CompanyName, c.Phone}); 
+0

Я, возможно, придется обернуть весь запрос минус Выберите в гипсе просто получить лямбда включен метод Select. –

+0

Единственное, что должен сделать актер, это включить IntelliSense. Если объект не относится к этому типу перед рукой, кастинг не сможет его закрепить. –

 Смежные вопросы

  • Нет связанных вопросов^_^