是否可以在linq中一次对所有行进行包含搜索,而不是将它们列出。
此刻我正在做
Data.Where(
x => x.Name.Contains(searchValue) ||
x.Address.Contains(searchValue) ||
x.Id.ToString().Contains(searchValue)... etc
我想做的是传递一个泛型,并让它搜索行中的所有数据?
例如Data.Where(x => row.Contains(searchValue))
答案 0 :(得分:0)
与LINQ query any of the properties contains string重复
您可以使用反射,但这对性能没有好处
list.Where(x => x.GetType()
.GetProperties()
.Any(p =>
{
var value = p.GetValue(x);
return value != null && value.ToString().Contains("some string");
}));
编辑: 就像Fabio所说的那样,它将过滤内存中的列表,而不是sql。
答案 1 :(得分:-2)
您可以使用连接其他属性的getter方法为数据类型添加属性:
public string JoinedProperty{
get{
return Name+" "+Id.ToString();
}
}
然后此代码可以帮助您
Data.Where(
x => x.Contains(searchValue) ... etc