繁体   English   中英

EF Core Linq 查询以从可能性列表中选择匹配的行

[英]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)
);

...但我不知道其中任何一个的效率如何。 我将如何使用ohnmit编写可以有效匹配“John”、“Johnathan”、“Smith”、“Smitty”等的 linq 查询?

实体框架的伟大之处在于,当 C# 前端出现问题时,您始终可以使用原始 SQL。

var names = context.Names
    .FromSqlRaw("select Name from Names where name like %{0}%", name)
    .ToList();

在 Entity Framework Core 中编写原始 SQL 查询

暂无
暂无

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

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