我正在使用efcore3.1.4(表名模糊化)在sqlserver数据库上搜索一个大视图。
var query = searchModel.SearchQuery.ToUpper();
list = list.Where(s => EF.Functions.Like(s.name0.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name1.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name2.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name3.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name4.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name5.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name6.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name7.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name8.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name9.ToUpper(), $"%{query}%")
|| EF.Functions.Like(s.name10.ToUpper(), $"%{query}%"));
有没有办法只选择所有列而不在列中添加or运算符 Where
每列的条件?
2条答案
按热度按时间kpbwa7wx1#
您可以使用这个答案作为起点,通过实体框架来读取数据库的模式。一旦有了列名列表,就可以编写静态或扩展方法
IsLikeAColumn
,用于Where(s => IsLikeAColumn(s))
,看起来像:5us2dqdw2#
不,这根本不可能,即使在SQLServer中也不可能。即使在c#
If
以及While
你也不能这样做。应该有多个带有比较运算符的条件