我有许多具有可选参数的函数,默认值为null,如下所示:
public static IEnumerable<Product> GetProducts(int? productCategoryId = null)
在我的linq where子句中,我通常喜欢检查是否这样:
if (productCategoryId == null || productCategoryId == p.ProductCategoryId)
在我的应用程序中,我通常必须将来自Telerik ComboBox的选定值传递到这样的函数中,以便可以过滤掉产品列表:
GetProducts(CategoryComboBox.SelectedValue);
C#不允许我这样做,因为如果用户没有在ComboBox中选择任何内容,则所选值是一个空字符串,这对我的函数不起作用,因为如果没有选择,我更喜欢发送NULL,否则他们所选择的内容的身份。
有关此扩展方法的建议或者C#/ Telerik ComboBox是否具有内置函数?这是我现在拥有的:
public static int? ToNullableInt32(this string val)
{
int i;
if (Int32.TryParse(val, out i)) return i;
return null;
}
在上面的例子中,我还需要让它将一个可空的int作为null返回,或者将所选的值作为int返回。
答案 0 :(得分:0)
这是一个使用泛型的出色解决方案。我们在代码库中使用它。
Generic TryParse Extension method
一旦你有了,那么你就可以......
this.GetProducts(this.CategoryComboBox.SelectedValue.TryParse<int>());