簡體   English   中英

何時在linq查詢中調用Take?

[英]When does Take get called in a linq query?

所以我有這樣的事情:

public IQueryable<Teachers> GetTeachers()
{
   var query = from a in this.Context.Techers
               where a.active == true
               select a
    return query;
}

然后我稱之為:

List<Teachers> =  this.repo.GetTeachers().Take(5000).ToList();

讓我們稍后在程序中的某個地方說我將這些記錄標記為活動為假;

現在如果我再次運行這個程序,它應該返回零記錄嗎? 或者它選擇“下一個5000可用”活動記錄?

您正在使用LINQ to SQL(或LINQ to Entites),因此您的查詢將在SQL查詢中進行轉換,這看起來與此類似:

SELECT TOP 5000 *
FROM techers
WHERE active = true

將返回的內容取決於db中的表的內容。

如果您將前5000條記錄標記為非活動狀態,則再次運行它將返回下一個5000個活動元素(如果表中仍有活動元素)。

如果將查詢具體化為列表,則無法再對服務器執行該查詢。 List對執行查詢一無所知。 只有保留IQueryable,才能重新執行查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM