Daniele Rota Nodari
Тогда у вас есть список имена из дней, заполненных только 3 именами и нужных всем остальным дням
Прежде всего, вы пытаетесь сравнить строка значения для будни значения, где строки должны быть именами будни ценности.
List<string> days = new List<string>();
days.Add(WeekDays.Sunday.ToString());
days.Add(WeekDays.Monday.ToString());
days.Add(WeekDays.Wednesday.ToString());
Вы не можете сравнить их без преобразования. Преобразование может быть в любом направлении, в зависимости от шансов повторного использования.
- Вы можете собрать имена всех
будни значения, используя
Перечисление.Метод getnames, в случае хранения во временной переменной или в статическом поле, чтобы избежать повторения операции.
- Вы можете конвертировать имена
дни список к
будни значения, используя
Перечисление.Разобрать или
Перечисление.метод tryparse, и хранить во временной переменной; в этом случае помните, что
Перечисление.Разобрать будет бросать на непризнанные/плохие имена.
В обоих случаях вы можете использовать
Система.Linq.Перечислимый.Кроме метод расширения.
Получите все отсутствующие имена в виде массива, а затем преобразуйте их в значения:
var missingNames = Enum.GetNames(typeof(WeekDays)).Except(days).ToArray();
var missingValues = Array.ConvertAll(missingNames, value => (WeekDays)Enum.Parse(typeof(WeekDays), value, true));
Преобразует используемые имена в значения в виде перечислимой последовательности, а затем получает все отсутствующие значения в виде массива:
var daysValues = days.Select(value => (WeekDays)Enum.Parse(typeof(WeekDays), value, true));
var missingValues = ((WeekDays[])Enum.GetValues(typeof(WeekDays))).Except(daysValues).ToArray();
Это самые компактные решения, но я бы разбил их на этапы составления, как для удобства чтения, так и для удобства обслуживания.
Я предлагаю вам ознакомиться с содержанием онлайн-справки и локальной документацией для всех методов (Enum.Parse, Enum.TryParse, Enum.Метод Getnames, Перечисление.GetValues, Массив.ConvertAll, Перечисли.Выберите, Перечислимый.Разве Что, Перечислимо.Метод toArray).
Имейте в виду, что эти решения дают массив результатов, которые лучше всего подходят в том случае, если вы будете выполнять над ними несколько операций и отлаживать их; если вы будете итерировать только один раз, то по крайней мере
последний ToArray призыв не требуется.
Для
Кроме метод работы, который вы должны добавить
использование System.Linq; поверх исходного файла.