Функция, которая проверяет строку ComboBox.SelectedValue и возвращает ноль, если она пуста

У меня есть много функций, которые имеют необязательные параметры со значением по умолчанию, равным нулю, например:

public static IEnumerable<Product> GetProducts(int? productCategoryId = null)

В моем предложении linq where мне обычно нравится проверять, если это так:

if (productCategoryId == null || productCategoryId == p.ProductCategoryId)

В моем приложении мне обычно приходится передавать выбранные значения, полученные из Telerik ComboBox, в такие функции, чтобы можно было отфильтровать список продуктов:

GetProducts(CategoryComboBox.SelectedValue);

C# не позволит мне сделать это, потому что, если пользователь ничего не выбирает в ComboBox, выбранное значение будет пустой строкой, которая не будет работать с моей функцией, так как я предпочитаю отправлять в NULL, если нет выбора, в противном случае идентификатор id что бы они ни выбрали.

Любые рекомендации по хорошему методу расширения для этого или если C# / Telerik ComboBox имеет встроенную функцию для этого? Вот что у меня сейчас есть:

    public static int? ToNullableInt32(this string val)
    {
        int i;
        if (Int32.TryParse(val, out i)) return i;
        return null;
    }

В приведенном выше примере мне также нужно, чтобы он возвращал обнуляемое int как ноль или выбранное значение как int.

1 ответ

Это фантастическое решение, которое использует дженерики. Мы используем это по всей нашей кодовой базе.

Общий метод расширения TryParse

если у вас есть это, то вы можете сделать...

this.GetProducts(this.CategoryComboBox.SelectedValue.TryParse<int>());
Другие вопросы по тегам