简单的Linq动态查询问题

时间:2010-03-30 03:23:57

标签: linq dynamicquery

在Linq Dynamic Query中,Scott Guthrie展示了一个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并将其转储到不同的数据结构中?据我所知,唯一的.Select可用的是Dymanic Query版本,只需要一个字符串和参数列表。

1 个答案:

答案 0 :(得分: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<Customer>( c => new CompanyContact {Name = c.CompanyName, c.Phone});