LINQ:“包含”和 Lambda 查询
我有一个名为 buildingStatus
的 List
。我想检查它是否包含其字符代码(由 GetCharCode()
返回)等于某个变量 v.Status
的状态。
是否有某种方法可以按照下面的(非编译)代码来做到这一点?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
I have a List<BuildingStatus>
called buildingStatus
. I'd like to check whether it contains a status whose char code (returned by GetCharCode()
) equals some variable, v.Status
.
Is there some way of doing this, along the lines of the (non-compiling) code below?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
使用
Any()
而不是Contains()
:Use
Any()
instead ofContains()
:Linq 扩展方法 Any 可以为您工作......
The Linq extension method Any could work for you...
以下是如何使用
Contains
来实现您想要的:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
这将返回一个布尔值。Here is how you can use
Contains
to achieve what you want:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
this will return a Boolean value.我不确定您到底在寻找什么,但是这个程序:
产生预期的输出:
这个程序比较枚举的字符串表示形式并产生相同的输出:
我创建了这个扩展方法来将一个 IEnumerable 转换为另一个 IEnumerable,但是我不确定它的效率如何;它可能只是在幕后创建一个列表。
然后,您可以将 where 子句更改为:
并跳过在开头使用
ConvertAll ()
创建List
的过程。I'm not sure precisely what you're looking for, but this program:
produces the expected output:
This program compares a string representation of the enum and produces the same output:
I created this extension method to convert one IEnumerable to another, but I'm not sure how efficient it is; it may just create a list behind the scenes.
Then you can change the where clause to:
and skip creating the
List<string>
withConvertAll ()
at the beginning.如果我理解正确,您需要转换您存储的类型(char 值)
将 Building list 中的类型更改为您存储在buildingStatus 列表中的类型(枚举)。
(对于建筑物列表中的每个状态//字符值//,
该状态是否存在于buildingStatus列表中//枚举值//)
If I understand correctly, you need to convert the type (char value) that you store
in Building list to the type (enum) that you store in buildingStatus list.
(For each status in the Building list//character value//,
does the status exists in the buildingStatus list//enum value//)