繁体   English   中英

LIKE比较实体框架中的列表

[英]LIKE compare a list in Entity Framework

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

“约翰”“艾伦”

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

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

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

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

即,我希望我的原始姓名列表可以在人员表中查找名称如下的人员

“约翰·史密斯”“鲍勃·艾伦森”

等等

您可以使用其中已经知道如何使用它的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

您可以使用Anystring.Contains来做到这string.Contains

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

您可以使用以下查询:

people = people.Where(x => names.Like(x.Name, "%key%"));

使用Contains接近Like(%pattern%) 并且将选择一些“汤姆·约翰逊”进行结果收集。 我更喜欢使用StartsWith (实现Like(pattern%) )按名称进行过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM