[英]EF Core Linq Query to Select Rows That Match From a List of Possibilities
假设一个DbSet<Thing> things
; 并且Thing
有一个Name
属性。
如果我想检索与名称列表匹配的事物列表,则非常简单:
var names = new List<string>{"John", "Jacob", "Jinkelheimer", "Smith"};
return things.Where(t => names.Contains(t.name));
但是,如果我想匹配部分名称可能性的列表怎么办?
var nameBits = (new List<string>{"ohn", "mit"}).ToLower();
// this doesn't seem good / right / efficient
things.Where(t => nameBits
.Select(bit => EF.Functions.Like(t.Name, $"%{bit}%")
.Any(m => m)
);
// I could also go with:
things.Where(t => nameBits
.Select(bit => t.Name.Contains(bit)).Any(m => m)
);
...但我不知道其中任何一个的效率如何。 我将如何使用ohn
和mit
编写可以有效匹配“John”、“Johnathan”、“Smith”、“Smitty”等的 linq 查询?
实体框架的伟大之处在于,当 C# 前端出现问题时,您始终可以使用原始 SQL。
var names = context.Names
.FromSqlRaw("select Name from Names where name like %{0}%", name)
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.