我有一个像这样的名字列表:
"约翰" "艾伦"
以及具有各种名称的人员列表
我可以在我的人员表中搜索与我的列表匹配的任何名称:
people = people.Where(x => names.Contains(x.Name));
但是,这会执行完全匹配。如何修改我的查询以便能够对名称列表中的项目执行LIKE搜索?
也就是说,我希望我的原始名单能够在人员表中找到名称如
的人" John Smith" " Bob Alanson"
等
答案 0 :(得分:1)
您可以使用已知道如何使用它的Any
和Contains
。
var names = new List<string>() { "John", "Alan" };
var people = new List<string>() { "John Smith", "Bob Alanson" };
var result = people.Where(x => names.Any(y => x.Contains(y))).ToList();
结果是
John Smith
Bob Alanson
答案 1 :(得分:1)
您可以使用Any
和string.Contains
people = people.Where(x => names.Any(n => x.Name.Contains(n)));
答案 2 :(得分:0)
您可以使用以下查询:
people = people.Where(x => names.Like(x.Name, "%key%"));
答案 3 :(得分:0)
使用包含接近赞(%pattern%)。还有一些&#34;汤姆约翰逊&#34;将被选中进行结果收集。我更喜欢使用 StartsWith (实现 Like(模式%))按名称进行过滤。