簡體   English   中英

不同的 linq 使用順序之間是否存在性能差異?

[英]Is there any performance difference between different linq usage ordering?

IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault();

對比

IEnumerable<Element>.FirstOrDefault().Cast<SomeClass>();

我問的原因是,我在網上看到很多例子都是以第一種方式使用它。 但是,第二個 linq 序列在性能方面是否更好,因為它避免了首先轉換 IEnumerable 中的所有元素? 或者也許第一個更安全? 還是他們實際上在后台做着完全相同的事情?

IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault(); 可能是想要你想要的,但答案與性能無關。

除非ElementIEnumerable ,否則對FirstOrDefault()的結果使用Cast()是沒有意義的,並且會導致編譯錯誤。

假設您的意思是(SomeClass)(IEnumerable<Element>.FirstOrDefault()); 對於第二種情況,這也是有問題的,因為如果IEnumerable<Element>為空,那么如果Element是引用類型,則FirstOrDefault()將返回null ,如果它是值類型,則返回默認構造Element 如果IEnumerable<Element>為空並且SomeClass是值類型,則最好默認構造SomeClass ,而不是嘗試從Element強制轉換為SomeClass

IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault(); ElementSomeClass最多只能執行一次轉換,因為 LINQ 鏈是惰性枚舉的。

暫無
暫無

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

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