比较实体框架中的列表

时间:2018-01-17 03:03:31

标签: c# entity-framework

我有一个像这样的名字列表:

"约翰" "艾伦"

以及具有各种名称的人员列表

我可以在我的人员表中搜索与我的列表匹配的任何名称:

people = people.Where(x => names.Contains(x.Name));

但是,这会执行完全匹配。如何修改我的查询以便能够对名称列表中的项目执行LIKE搜索?

也就是说,我希望我的原始名单能够在人员表中找到名称如

的人

" John Smith" " Bob Alanson"

4 个答案:

答案 0 :(得分:1)

您可以使用已知道如何使用它的AnyContains

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)

您可以使用Anystring.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(模式%))按名称进行过滤。