在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版本,只需要一个字符串和参数列表。
答案 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});