[英]What's the return type of a LINQ query?
是IEnumerable<T>
嗎? 據我所知,該引用始終指向 class 實例。 LINQ 查詢真正指向什么實例類型?
您可以.GetType()
在IEnumerable<T>
變量上調用 .GetType() 並檢查調試器中的類型來找到它。
對於不同的 LINQ 提供程序,甚至不同的 LINQ 方法,這些類型可能不同,也可能不同。
對您的代碼重要的是它們都實現了您應該使用的IEnumerable<T>
或也接受表達式的IQueryable<T>
,這意味着您的謂詞和投影將成為語法樹,並且可以在運行時由 LINQ 提供程序操作,例如要翻譯成SQL。
實際的類,如果這是您要問的,甚至可能是編譯器生成的,例如, yield return
表達式被轉換為這樣的 class。
無論哪種方式,它們通常是內部的,你永遠不應該依賴它們。
根據您的原始數據源,它是 IEnumerable 或 IQueryable:
Linq 數據庫查詢的結果通常是IQueryable<T> ,它派生自 IEnumerable<T>、IQueryable 和 IEnumerable。
如果您的數據庫查詢包含 OrderBy 子句,則類型為IOrderedQueryable<T> ,派生自 IQueryable<T>
如果您的數據源是 IEnumerable,則結果類型為IEnumerable<T>
我不知道,但我想這是一種內部類型。 您不必考慮 class。
實際上,根據具體查詢,它可能是不同的類。 編譯器可以根據條件/處理將 LINQ 表達式轉換為一種或另一種實現。
您可以在這里查看查詢操作的三個部分。您可以看到 LINQ 查詢的返回類型為 IEnumerable<int>。
如果我沒記錯的話, IEnumerable< T >
,其中 T 取決於您的查詢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.