Linq表达式,其中空字符串充当通配符

时间:2015-11-14 00:27:45

标签: c# asp.net-mvc linq

我正在尝试在我的标准中编写一个包含大约10个输入的搜索功能,所有输入都可以为空。

我想出的是,如果输入为null,我希望它能够充当通配符。

例如,如果 model =“” id就像搜索查询一样:

context.products.where(product => product.location == location && product.type  == type).tolist();

我确信可以通过加载if语句来完成,但必须有更好的解决方案。 有什么想法吗?

 public static List<product> Search(FormCollection formCollection)
            {

     var model = formCollection["model"];
     var location = formCollection["location"];
     var type = formCollection["type"];


    var results = context.products.where(product => product.model == model && product.location == location && product.type  == type).tolist();

    return results;

    }

1 个答案:

答案 0 :(得分:2)

这样的事情:

var results = context.products
    .where(product => (model == null || product.model == model)
                && (location == null || product.location == location)
                && (type == null || product.type  == type)).tolist();