我想要动态地包含或排除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)
请建议我的解决方案。
答案 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));