1
我想在鏈接到數據庫查詢的IQUeryable上運行選擇。它的工作正常,但對於所有被選中的屬性,它運行一個單獨的查詢。LINQ選擇使許多SQL調用的語句
我的代碼看起來是這樣的
IQueryable<MyDataSource> data = [Some Complicated Query I've been Building Up];
var results = data.Select(d => new
{
A = d.A,
B = d.B,
C = d.C
}).Take(100).ToArray();
現在,這個正在老化,即使實際查詢不採取長。 當我運行一個SQL事件探查器時,我發現它爲我選擇的每個屬性運行不同的SQL選擇過程 - 對於我返回的每個實體(因此在上例中大約有300個不同的查詢,以及執行過濾的實際第一個查詢)。
我很確定我在這裏做錯了什麼,它是什麼?我期待它運行一個大型查詢 - 它從數據源中選擇正確的列(你知道從[bla bla]選擇top top 100 d.A,d.B,d.C),而不是所有這些混亂。
可能dublicate http://stackoverflow.com/questions/7051287/using-linq-select新建類型太慢了?rq = 1 – JleruOHeP 2013-05-08 10:17:06
您需要使用'IQueryable'而不是'IEnumerable '。 –
2013-05-08 10:18:53
這些值可能標記爲懶惰,也許?另外:我會非常感興趣的是看看'[我已經構建的一些複雜的查詢]是如何組成的 - 特別是在什麼時候變成'IEnumerable'而不是'IQueryable '。如果你想讓'select'包含所引用的3個屬性,'data'是'IQueryable ',而不是'IEnumerable '是非常重要的。 –
2013-05-08 10:19:08