Чтобы упростить, допустим, у меня есть MyEnum
и MyClass
:
enum MyEnum
{
Undefined = 0,
A = 1,
B = 2,
C = 3,
D = 4
}
class MyClass { MyEnum MyEnumValue { get; set; } }
Чтобы отфильтровать список MyClass
по значению MyEnum
, которое я использую:
list.Where(r => r.MyEnumValue == myEnum);
Но если MyEnum
равно конкретному значению (скажем, MyEnum.B
), мне потребуется список, чтобы вернуть также любые значения, которые равны MyEnum.B
или MyEnum.A
.
Вот что я придумал:
public static MyClass MyClass_By_MyEnum(IEnumarable<MyClass> list, MyEnum myEnum)
{
if (myEnum == MyEnum.B)
{
return list.Where(r =>
r.MyEnumValue == MyEnum.A ||
r.MyEnumValue == MyEnum.B ||
r.MyEnumValue == MyEnum.C
).FirstOrDefault();
}
else
{
return list.Where(r => r.MyEnumValue == myEnum).FirstOrDefault();
}
}
Есть ли способ достичь этого, используя только одну строку? без оператора if else?
РЕДАКТИРОВАТЬ 1:
Я ищу лучшее решение на основе дизайна, любое предложение?