2015-05-05 36 views
0

我有有默认值空可选参数,如这许多功能:函数,用来检查一个ComboBox.SelectedValue字符串,如果为空,则返回null

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

在我的LINQ where子句我通常如检查,如果是这样的:

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

在我的应用程序通常要传递来自Telerik的组合框到功能像这样如此的产品列表可以被过滤下来选择的值:

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。

+0

对不起键入该快捷意味着把INT?我现在更新它 – JTunney

+0

你看起来对我来说还好,虽然我个人不会把它做成扩展方法(只是静态工具类的静态方法)。 –

+0

好吧,你有什么经验法则可以让它成为扩展方法吗? – JTunney

回答

0

这是一个奇妙的解决方案,使用泛型。我们在我们的代码库中使用它。

Generic TryParse Extension method

,一旦你有,那么你可以做...

this.GetProducts(this.CategoryComboBox.SelectedValue.TryParse<int>()); 
相关问题