列表有两列 - 使用部分搜索

时间:2014-11-07 10:28:23

标签: linq list

我有一个包含2列的列表,并尝试使用包含部分搜索。 Emp包含id和name。

var list = new List<Emp>();
list = list.Any(o => o.Contains(new Emp{ Name = name }));

然而它抛出了一个错误: 无法从Emp转换为system.Linq。 IQueryable的

对此的任何输入都会有所帮助

提前致谢

1 个答案:

答案 0 :(得分:5)

目前尚不清楚你究竟想做什么。你可能想要:

list = list.Where(emp => emp.Name == name).ToList();

或者

list = list.Where(emp => emp.Name.Contains(name)).ToList();

虽然不清楚为什么你会尝试使用Any

编辑:鉴于评论,我怀疑你真的想要:

list = list.Where(emp => emp.Name.StartsWith(name)).ToList();

(你可能需要让它不区分大小写。)

或者如果您需要检查名称的每个部分,您可以使用正则表达式或:

list = list.Where(emp => emp.Name.Split(' ')
                            .Any(x => x.StartsWith(name))).ToList();

这最后一种方法将真正效率低下,因为它会在每次查看时分割每个名称...您可能会使Emp个对象不可变并缓存分割形成。或者查看正则表达式版本。无论哪种方式,您可能不想要string.Contains,因为它会在名称中找到匹配的任何地方