如果它与枚举中的任何值都不匹配,请过滤掉foreach循环中的值

时间:2015-03-27 20:18:39

标签: c# .net

如果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,我可以在这里做类似的事吗?

1 个答案:

答案 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>())