如果foreach循环中的值与特定枚举中的任何值都不匹配,如何跳过该值。例如:
public enum IDs
{
SomeIdOne = 1001,
SomeIdTwo = 1002,
SomeIdThree = 1003
}
// one of the list items(7777) does not match what's in the IDs enum
var SomeIds = new List<IDs>() { 1002,7777,1001 };
// skip that item when looping through the list.
foreach (IDs id in SomeIds)
{
// do things with id
}
在过去,我曾使用LINQ在类似的情况下过滤掉0,我可以在这里做类似的事吗?
答案 0 :(得分:1)
尝试
foreach(var id in SomeIds.Where(x => Enum.IsDefined(typeof(IDs), x)))
{
//....
}
如果SomeIds
是整数列表,请添加Cast
:
foreach(var id in SomeIds.Where(x => Enum.IsDefined(typeof(IDs), x)).Cast<IDs>())