❔ Compare Enum Values with submitted value
Hi, how can I compare the submitted value with values in an enum without using switch-case? For example,
public enum Weekends {
Saturday,
Sunday
}
[HttpPost]
public async Task<IActionResult> Create([FromForm] Day day)
{
var weekendvalues = Enum.GetNames(typeof(Weekends));
var values = string.Join(", ", weekendvalues);
if (day.Day != values) {
// Do something
}
else if () {
// Some other things
}
}if (Model.State.IsValid && day.Day != values && day.File != null), so that means I have a switch-case block just for day.Day != valuescompareto()?Compile: 727.529ms | Execution: 111.930ms | React with ❌ to remove this embed.
if (day.Day == Days.Saturday)if (Model.State.IsValid && day.Day != Saturday or day.Day != Sunday && day.File != null), I was also hoping if it was possible to just extract the values and assign them to a variableDay[] Weekends = new() { Days.Saturday, Days.Sunday } and check if (Weekends.Contains(day.Day))enum Weekends? Or is it creating a new enum?enum Days, and replaces enum Weekendsday enum Days...hmm, so, it is creating a new enum then? If not, I still don't get this partif (day.Day is Days.Saturday or day.Day is Days.Sunday)?day gets value from user selection. So Weekends.Contains(day.Day)) checks for the value in that enum, when it should be the other way aroundif (!weekendValues). I tried it and it works, but I'm not sure if there's some underlying caveat hereif (Model.State.IsValid && day.Day != values && day.File != null)day.Day != valuescompareto()(0, Monday)
(1, Tuesday)
(2, Wednesday)
(3, Thursday)
(4, Friday)
(5, Saturday)
(6, Sunday)if (day.Day == Days.Saturday)if (Model.State.IsValid && day.Day != Saturday or day.Day != Sunday && day.File != null)Day[] Weekends = new() { Days.Saturday, Days.Sunday }if (Weekends.Contains(day.Day))enum Weekendsenum Weekendsenum Daysenum Daysdaydayif (day.Day is Days.Saturday or day.Day is Days.Sunday)Weekends.Contains(day.Day))var weekends = Weekends.Saturday | Weekends.Sunday;
bool isWeekEnd = weekends.HasFlag(day.Day);if (!weekendValues) switch (day.Day) {
case Day.Saturday:
// Do something
break;
}private enum Days
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
var names = Enum.GetNames<Days>();
var values = Enum.GetValues<Days>().Cast<int>();
var collection = names.Zip(values, (s, days) => (days, s));
Console.WriteLine(string.Join(Environment.NewLine, collection)); switch (day.Day) {
case Day.Saturday or Day.Sunday:
// Do something
break;
default:
// Do something else for weekdays
break;
}var weekendValues= new[] { Weekends.Saturday, Weekends.Sunday}.Contains(day.Day);