【发布时间】:2016-01-29 06:49:20
【问题描述】:
我正在尝试通过其Name 属性在数据库中查找实体(Tags),忽略大小写很重要(当搜索database 并且数据库包含名称为@ 的标签时987654325@,应该退回)。现在,我的代码如下所示:
public IEnumerable<db.Tag> FindByNames(IEnumerable<string> tagNames)
{
return this.DatabaseContext.Tags
.Where(tag => tagNames.Contains(tag.Name));
}
显然,这个是区分大小写的。我试图提供StringComparer.OrdinalIgnoreCase 作为Contains 方法的比较器,但在执行期间收到警告,表示无法翻译表达式并将在代码中而不是在数据库中执行(我不记得确切的消息,我一回到我的开发机器上就会编辑)。如果必须,我可以忍受,但在这种情况下知道如何让数据库完成工作会很好。有可能吗?
【问题讨论】:
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!此外,您可能需要重新考虑
Contains-操作,因为这将具有线性(或更差)性能 - 如果集合包含许多元素,则插入带有索引的临时表并进行连接可能是一个选项。
标签: sqlite entity-framework-core