2010-03-30 76 views
1

在LINQ Dynamic Query,斯科特Guthrie的示出了示例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和爲之傾倒到不同的數據結構,他的結果呢?據我所知,唯一可用的.​​Select是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<Customer>(c => new CompanyContact {Name = c.CompanyName, c.Phone}); 
+0

我可能要在包裝鑄造整個查詢減去選擇只是爲了讓拉姆達啓用選擇方法。 – 2010-03-30 05:21:30

+0

演員應該做的唯一事情就是啓用智能感知。如果對象不是那種類型的話,施法將無法使用它。 – 2010-03-30 11:34:04