在其中的linq子句中动态包含/排除字段



我想包括或排除在状态中的字段。

我有一个带有5列的网格,每列都有一个称为CanSearchable的属性。如果用户在文本框中输入搜索串并单击Searech按钮,则我需要在可搜索属性为真的列中搜索字符串。单击搜索按钮后,我已将搜索串和要搜索的列(列1,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)

请建议我解决方案。

如果要搜索的列将其设置为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));

最新更新