簡體   English   中英

LINQ 查詢的返回類型是什么?

[英]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.

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