gpt4 book ai didi

.net - 如何使用 linq 检查标志/按位枚举是否包含类型?

转载 作者:行者123 更新时间:2023-12-04 16:49:30 25 4
gpt4 key购买 nike

下面的 lambda 语句返回 null,当我希望它返回一个字符串值时。

var countryCode = AddressComponents
.Where(x => x.AddressType == AddressType.Country)
.Select(x => x.ShortName)
.SingleOrDefault();

现在,我正在查询的当前实例的 AddressType 属性包含以下数据:
AddressType.Political | AddressType.Country
所以它包含两个值。

当然,我的 lambda 不会工作,因为 country 的值(假设它是 1)!= 政治按位或 Country 的值(假设它是 1 | 2 == 3)。

有任何想法吗?

我担心我需要一些非常丑陋的东西,比如......
((AddressTypes & AddressType.Country) == AddressType.Country)
.. 想法?

最佳答案

.NET 4.0 具有 Enum.HasFlag 方法:

x => x.AddressType.HasFlag(AddressType.Country)

如果您使用的不是 .NET 4.0,则按位 AND你有一个不错的选择。
如果您不喜欢该模式,请查看 UnconstrainedMelody ,它有一个用于此目的的扩展方法。或者,您可以自己编写一个;这个问题可能会有所帮助 -
Anyone know a good workaround for the lack of an enum generic constraint?

关于.net - 如何使用 linq 检查标志/按位枚举是否包含类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com