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. $(元素).not()和$(元素).filter()之间的区别是什么?
- 3. XSD简单元素和XSD复杂元素之间的区别
- 4. LINQ中两个“where”之间的区别
- 5. 如何区分生成元素和选定元素之间的区别?
- 6. Julia的nx1阵列和n元素数组之间的区别
- 7. R中一个向量的相邻元素之间的区别
- 8. Java中一个数组中的元素之间的区别
- 9. 击:$(猫)和之间的区别“美元”
- 10. WiX工具集中的PatchCreation元素和Patch元素之间有什么区别?
- 11. 聚合物元素中this和this.root之间的区别
- 12. `迭代器`和`元素引用之间的区别`
- 13. 查找C中行元素之间的区别#
- 14. 窗体和div元素之间的默认CSS设计区别
- 15. XSD:元素和属性之间的区别
- 16. 字符串与矢量元素之间的区别<string>
- 17. C++ - 前两个元素之间的区别
- 18. jQuery缓存元素,$变量和变量之间的区别?
- 19. requestAction和cakephp中使用元素之间的区别?
- 20. 元素节点和文本节点之间的区别
- 21. 属性指令和元素属性语法之间的区别?
- 22. 隐藏元素:Javascript属性和CSS样式之间的区别
- 23. Ruby 1.8与列表元素比较1.9之间的区别
- 24. TYPO3:插件和自定义内容元素之间的区别?
- 25. “.class元素”和“element.class”之间有什么区别?
- 26. LINQ to SQL和LINQ to Entities之间有什么区别?
- 27. HTML5媒体元素 - 可搜索和缓冲区之间的区别?
- 28. 之间的〜/和的区别../
- 29. CMake的:$ {}之间的区别 “$ {}”
- 30. 元素〜元素和元素+元素的区别