我坐在這間多雲星期六上午心中暗想:連接條件和多個Where方法調用之間有區別嗎?
IEnumerable<SomeType>
someThings = ...,
conjunctedThings = someThings.Where(thing => thing.Big && thing.Tall),
multiWhereThings = someThings
.Where(thing => thing.Big).Where(thing => thing.Tall);
直觀地說,我會說,conjunctedThings將被計算不慢於multiWhereThings但真的在一般情況下,有區別嗎?
我可以想象,如果大事和高大的份額取決於份額,計算可能會以不同的方式進行,但我想忽略這一方面。
我還需要考慮其他任何屬性嗎?例如。可枚舉類型或其他什麼?
這取決於_「...」_真的。例如,看看實體框架。無論您是在每個條件下使用Where,還是在每個條件下使用Where,在調用枚舉器時,所有的Where都將被壓縮到一個SQL WHERE中。 – CodeCaster
@CodeCaster謝謝。除了我提到的那些之外,請注意圍繞依賴項繪製一些線條? –
「Conjuncted」(awesome word btw)'Where'和'Select'查詢通過LINQ to Objects優化。任何時候你有一個表現問題,你最好的選擇是**拿出一個秒錶,並嘗試兩種方式**。然後你就會知道。任何你在這裏得到的答案都是猜測。如果有性能問題,則無法替代測量。 –