Функция, которая проверяет строку 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>());