在where子句LINQ中动态包含/排除字段

时间:2017-04-27 08:56:50

标签: c# .net linq

我想要动态地包含或排除where where条件。

我有一个包含5列的网格,每列都有一个名为CanSearchable的属性。如果用户在文本框中输入searchstring并单击Searech按钮, 我需要在CanSearchable属性为true的列中搜索字符串。单击搜索按钮后,我已将SearchString和要搜索的列(column1,column2,column4)发送到控制器。

这是我的搜索linq。

staffs = staffs.Where(s => s.column1.Contains(model.SearchString) ||
                                               s.column2.Contains(model.SearchString) ||
                                                s.column4.Contains(model.SearchString));

我想根据要搜索的列动态创建此部分。

    s.column1.Contains(model.SearchString) || s.column2.Contains(model.SearchString) ||
 s.column4.Contains(model.SearchString)

请建议我的解决方案。

1 个答案:

答案 0 :(得分:2)

如果您要搜索的列设置为CanSearchable, 那你的要求很容易

  staffs = staffs.Where(s =>
           s.column1.CanSearchable && s.column1.Content.Contains(model.SearchString)||                                                   
           s.column2.CanSearchable && s.column2.Content.Contains(model.SearchString)|| 
           s.column3.CanSearchable && s.column3.Content.Contains(model.SearchString)||                                              
           s.column4.CanSearchable && s.column4.Content.Contains(model.SearchString));