1

在 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 是动态查询版本,它只接受一个字符串和参数列表。

4

1 回答 1

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}); 
于 2010-03-30T03:41:00.863 回答