我有一个包含2列的列表,并尝试使用包含部分搜索。 Emp包含id和name。
var list = new List<Emp>();
list = list.Any(o => o.Contains(new Emp{ Name = name }));
然而它抛出了一个错误: 无法从Emp转换为system.Linq。 IQueryable的
对此的任何输入都会有所帮助
提前致谢
答案 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
,因为它会在名称中找到匹配的任何地方。