2
Dim query = (From p in Parent _
select _
p.ID, _
Tags = String.Join("|", p.Child.Select(Function(c) c.Tag.TagName).ToArray)).Take(100)
在上面的查詢,使用採取時限制返回的行,單獨的SQL查詢的每一行返回「標籤」字段來執行。如果我刪除Take(100),將一個查詢發送到Sql Server。LinqToSql - 限制性的行數時防止子查詢返回
那麼,如何限制返回的行數,同時防止爲每行執行新的子查詢呢?
爲什麼它沒有Take()?如果使用ToList()替換Take以執行查詢,則只會生成一個SQL查詢! – 2009-09-16 08:58:30
由於Take是必須在SQL服務器上執行的其他操作。 query-thats-already-partial-executed.ToList()。取(100),將生成1個查詢; query-thats-already-partial-executed.Take(100).ToList()將生成其他查詢。 – 2009-09-16 09:21:17
好的,但似乎仍無法解決我的原始問題。即使刪除toArray(例如,更改爲簡單p.Child)也會導致相同的行爲。 – 2009-09-16 09:32:39