Linq一次跨行搜索(。包含)所有项目吗?

时间:2018-06-26 09:26:12

标签: c# sql linq generics

是否可以在linq中一次对所有行进行包含搜索,而不是将它们列出。

此刻我正在做

    Data.Where(
        x => x.Name.Contains(searchValue) ||
        x.Address.Contains(searchValue) || 
        x.Id.ToString().Contains(searchValue)... etc

我想做的是传递一个泛型,并让它搜索行中的所有数据?

例如Data.Where(x => row.Contains(searchValue))

2 个答案:

答案 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