首页 > 解决方案 > 一次跨行中的所有项目的Linq搜索(.Contains)?

问题描述

有没有办法在 linq 中一次对所有行进行包含搜索,而不是将它们列出来。

目前我正在做

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

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

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

标签: c#sqllinqgenerics

解决方案


重复的LINQ 查询任何属性都包含字符串

您可以使用反射,但它不利于性能

list.Where(x => x.GetType()
            .GetProperties()
            .Any(p =>
            {
                var value = p.GetValue(x);
                return value != null && value.ToString().Contains("some string");
            }));

编辑:就像法比奥所说,这将在内存中过滤列表,而不是在 sql 中。


推荐阅读