我收到一个字符串作为json参数,它应该是一个时区ID。我想检查一下。
这就是我所拥有的:
TheTimezoneID = TheTimezoneID.Trim();
var AllTimezones = TimeZoneInfo.GetSystemTimeZones();
if (TheTimezoneID "is a valid .net timezone" == true) {}
如果TheTimezoneID
AllTimezones
中有.Any
,那么测试的linq表达式是什么?我尝试使用{{1}},但它无效。
感谢。
答案 0 :(得分:8)
如果你打算在各种情况下这样做,你应该使用:
private static readonly HashSet<string> AllTimeZoneIds =
new HashSet<string>(TimeZoneInfo.GetSystemTimeZones()
.Select(tz => tz.Id));
然后你可以使用:
if (AllTimeZoneIds.Contains(timeZoneId))
每次哈希集只能执行O(1)查找时,无需使用LINQ迭代整个时区列表。
如果您对使用Any
感到好奇,那就是:
if (AllTimeZoneIds.Select(tz => tz.Id).Contains(timeZoneid))
或
if (AllTimeZoneIds.Any(tz => tz.Id == timeZoneid))
请注意,“时区ID”是一个非常愚蠢的概念。这将检查它是否是有效的 .NET 时区ID。如果你真的得到像“欧洲/伦敦”这样的时区,那就不一样了。