有这个枚举:
public enum MyEnums
{
A = 1,
B = 2,
C = 3,
D = 4,
E = 5
}
如果我创建一个包含 MyEnums 中的一些枚举值的列表,例如:
IEnumerable<MyEnums> myEnums = new(){ MyEnums.A, MyEnums.B, MyEnums.C };
如何检查 int 值是否在此列表中?
query.Where(x => myEnums.Contains((int)x.MyValue));
问题是“x.MyValue”的名称与“MyEnums”中的名称不同,只有 int 值相同。
如果值集合具有一个
int
值的属性,那么您可以使用以下事实:enum
实际上是底层的 int
。目前尚不清楚您到底想要什么,所以这里有一些可能性(我创建了一个简单对象的集合来显示):
int
定义的 enum
值的集合:public enum MyEnum {A = 1, B = 2, C = 3, D = 4, E = 5}
public class ExampleType {
public int MyValue { get; set;}
}
public static void Main()
{
IEnumerable<MyEnum> myEnums = new List<MyEnum>(){ MyEnum.A, MyEnum.B, MyEnum.C };
IEnumerable<ExampleType> query = new List<ExampleType>(){ new ExampleType(){MyValue = 1}, new ExampleType(){MyValue = 2}, new ExampleType(){MyValue = 9}};
var results = query.Where(x => Enum.IsDefined(typeof(MyEnum), x.MyValue)).Select(x => x.MyValue);
foreach (var r in results) {
Console.WriteLine(r);
}
}
结果是 {1, 2}
enum
值集合中的 enum
定义的 int
值的集合:public enum MyEnum {A = 1, B = 2, C = 3, D = 4, E = 5}
public class ExampleType {
public int MyValue { get; set;}
}
public static void Main()
{
IEnumerable<MyEnum> myEnums = new List<MyEnum>(){ MyEnum.A, MyEnum.B, MyEnum.C };
IEnumerable<ExampleType> query = new List<ExampleType>(){ new ExampleType(){MyValue = 1}, new ExampleType(){MyValue = 2}, new ExampleType(){MyValue = 9}};
var results = query.Where(x => Enum.IsDefined(typeof(MyEnum), x.MyValue)).Select(x => (MyEnum)x.MyValue);
foreach (var r in results) {
Console.WriteLine(r);
}
}
结果是{A, B}
ExampleType
对象的集合,这些对象具有由 int
定义的属性的 enum
值:public enum MyEnum {A = 1, B = 2, C = 3, D = 4, E = 5}
public class ExampleType {
public int MyValue { get; set;}
public override string ToString() {
return this.MyValue.ToString();
}
}
public static void Main()
{
IEnumerable<MyEnum> myEnums = new List<MyEnum>(){ MyEnum.A, MyEnum.B, MyEnum.C };
IEnumerable<ExampleType> query = new List<ExampleType>(){ new ExampleType(){MyValue = 1}, new ExampleType(){MyValue = 2}, new ExampleType(){MyValue = 9}};
var results = query.Where(x => Enum.IsDefined(typeof(MyEnum), x.MyValue));
foreach (var r in results) {
Console.WriteLine(r);
}
}
结果是两个
ExampleType
对象,它们具有 MyValue
属性值,这些属性值是由 MyEnum
定义的有效值。