Как выводить значение по умолчанию, если оно не найдено?

Есть перечисление, по которому пользователь может искать предмет. Если пользователь в query впишет что-то другое, которого нет в перечислении -> ему должно найти предмет по Label. что-то вообще туплю. property всегда будет равно первом итему в перечислении. Потом даже если description будет первым, то его Label перетрёт.

private enum AvailablePropertyList {
    Label, Description
};

    foreach (var property in Enum.GetNames(typeof(AvailablePropertyList)))
    {
        if (property != AvailablePropertyList.Label.ToString() ||
            property != AvailablePropertyList.Description.ToString())
        {
            filter.SearchBy = AvailablePropertyList.Label.ToString();
        }
    }

Как мне тогда логику сделать, что если введеного значения нет - вывести Label по умолчанию?


Ответы (1 шт):

Автор решения: aepot

Что-то вы перемудрили, и query о котором вы говорите нигде нет

Enum.TryParse<AvailablePropertyList>(query, out var property);
filter.SearchBy = property.ToString();

Вот и всё.

Как это работает: out var property присваивается значение по умолчанию, если оно не найдено, а значение по умолчанию - это 0 для перечисления, потому что оно неявно наследует тип int, а значению 0 соответствует первое значение перечисления, если оно не указано явно, а первое значение здесь - Label. То есть то что вам нужно.

→ Ссылка