Простой вопрос Linq Dynamic Query - PullRequest
1 голос
/ 30 марта 2010

В Linq Динамический запрос Скотт Гатри показывает пример запроса Linq:

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, не делая foreach для каждой записи и не помещая его в другую структуру данных? Насколько мне известно, единственный доступный вариант - это версия Dymanic Query, которая принимает только строку и список параметров.

1 Ответ

4 голосов
/ 30 марта 2010

Насколько я вижу из цитируемой статьи, методы динамического запроса возвращают объекты 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}); 
...