select(a=>a) and select(a=>a.value)
有什麼區別?我在哪裏需要第二個?Linq元素之間的區別,element.value
回答
第一個(select(a => a)
)是多餘的 - 它沒有做任何事情。
第二個(select(a => a.value
)被稱爲投影。它將a
(不管那是什麼)的列表投影到其值的列表中。你還沒有告訴我們什麼a
或它的價值是什麼,但它看起來像一個領域或財產...
無論何時只想訪問對象「a」的「value」屬性,您都需要第二個參數。
選擇將給定函數應用於集合中的所有值。
a => a
因此將元素映射到自身,因此不具有任何效果。
a => a.value
將每個元素映射到它的value
屬性。
你已經收到了一些相當穩固的答覆,我不會與其他人爭論答案,他們很好,但我想在這裏嘗試一種不同的方法。
如果你真的沒有注意到選擇任何對象和選擇任何對象的屬性之間的區別 - 這是一個根本性的區別 - 我懷疑你的a
可能是Nullable<T>
。我懷疑這一點,因爲如果a
可以爲空,很多時候你可以互換使用a
和a.Value
,並且可能不會注意到其中的差異。
A Nullable<T>
將不可空的類型包裝成可以爲null的類。獲取並設置此屬性的值不會直接分配包裝類,但它實際上將分配(或獲取)值到其屬性。 A Nullable<T>
也帶有布爾屬性HasValue
。
如果您的數據庫包含一個位字段,並且該位字段恰好允許空值,那麼Linq to SQL(比如說)會將其映射到Nullable<bool>
(簡寫,bool?
)。如果您的表允許空,但實際上從未包含任何空值,你可能不會注意到.Select(myNullableBool => myNullableBool)
之間的差別(這是,正如有人所指出的,冗餘),並.Select(myNullableBool => myNullableBool.Value)
,但區別就在這裏實際上是後者返回IEnumerable<bool>
,而前者返回IEnumerable<Nullable<bool>>
。後者假設bool將會有一個值,所以如果你想玩的安全,你應該做.Where(mNB => mNB.HasValue).Select(mNB => mNB.Value)
(也有一個GetValueOrDefault
方法,你可以在你的選擇中使用)。如果標誌的空值在你的模型中沒有意義,那麼它的數據類型應該是布爾值,而不是可空的布爾值。在這種情況下,您要確保選擇.Value
而不是整個可空,因爲可以爲空的布爾值不能分配給布爾變量。
您的代碼沒有透露足夠的信息,以便能夠判斷此答覆是否與此處相關,但我猜這可能是您問題的真正原因。如果不是(或實際上即使是這樣),其他人回答的情況通常也是如此。
- 1. Element.value和Element.getAttribute(「value」)之間的區別
- 2. XSD簡單元素和XSD複雜元素之間的區別
- 3. LINQ中兩個「where」之間的區別
- 4. 如何區分生成元素和選定元素之間的區別?
- 5. Java中一個數組中的元素之間的區別
- 6. 聚合物元素中this和this.root之間的區別
- 7. XSD:元素和屬性之間的區別
- 8. 查找C中行元素之間的區別#
- 9. C++ - 前兩個元素之間的區別
- 10. requestAction和cakephp中使用元素之間的區別?
- 11. 屬性指令和元素屬性語法之間的區別?
- 12. jQuery緩存元素,$變量和變量之間的區別?
- 13. 字符串與矢量元素之間的區別<string>
- 14. TYPO3:插件和自定義內容元素之間的區別?
- 15. 元素節點和文本節點之間的區別
- 16. 「.class元素」和「element.class」之間有什麼區別?
- 17. HTML5媒體元素 - 可搜索和緩衝區之間的區別?
- 18. '+ ='和'= +'之間的區別?
- 19. form_for,form_tag之間的區別?
- 20. YES/TRUE之間的區別?
- 21. {!!之間的區別!!}和{{}}
- 22. isDown()之間的區別isChecked()
- 23. NSStrings之間的區別?
- 24. ==和case之間的區別?
- 25. 同步之間的區別
- 26. user_posts&user_status之間的區別
- 27. '#','%'和'$'之間的區別
- 28. | =和^ = css之間的區別
- 29. 「%〜dp0」和「。\」之間的區別?
- 30. site.master main.master之間的區別