C# 就像在实体框架中比较列表一样
我有一张这样的名单: “约翰” “艾伦” 还有一张有各种名字的人的名单 我可以在我的人员表中搜索与我的列表匹配的任何姓名,如下所示:C# 就像在实体框架中比较列表一样,c#,entity-framework,C#,Entity Framework,我有一张这样的名单: “约翰” “艾伦” 还有一张有各种名字的人的名单 我可以在我的人员表中搜索与我的列表匹配的任何姓名,如下所示: people = people.Where(x => names.Contains(x.Name)); 但是,这将执行精确匹配。如何修改查询,以便能够对名称列表中的项目执行类似的搜索 也就是说,我希望我的原始姓名列表能够在people表中找到姓名如下的人 “约翰·史密斯” “鲍勃·阿兰森” 等等。你可以使用任何你已经知道如何使用的和包含的 var name
people = people.Where(x => names.Contains(x.Name));
但是,这将执行精确匹配。如何修改查询,以便能够对名称列表中的项目执行类似的搜索
也就是说,我希望我的原始姓名列表能够在people表中找到姓名如下的人
“约翰·史密斯”
“鲍勃·阿兰森”
等等。你可以使用任何你已经知道如何使用的
和包含的
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();
您可以使用Any
和string.Contains
people = people.Where(x => names.Any(n => x.Name.Contains(n)));
您可以使用以下查询:
people = people.Where(x => names.Like(x.Name, "%key%"));
使用包含与类似(%pattern%)。一些“汤姆·约翰逊”将被选为结果收集。我更喜欢使用StartsWith(它实现了Like(pattern%))进行名称过滤。我不知道列表的Like
方法
people = people.Where(x => names.Like(x.Name, "%key%"));