【发布时间】:2014-04-22 06:12:02
【问题描述】:
我已经使用下面的 Entityframework 执行了一个 linq 查询
GroupMaster getGroup = null;
getGroup = DataContext.Groups.FirstOrDefault(item => keyword.IndexOf(item.Keywords,StringComparison.OrdinalIgnoreCase)>=0 && item.IsEnabled)
执行此方法时出现如下异常
LINQ to Entities 无法识别方法 'Int32 IndexOf(System.String, System.StringComparison)' 方法,并且这个 方法不能被翻译成商店表达式。
默认情况下Contains()方法区分大小写,所以我需要再次转换为lower。除了contains方法还有什么方法可以检查字符串匹配吗?有没有解决indexOf方法问题的方法?
【问题讨论】:
-
如果您公开
DataContext.Groups对象的相关字段,我可能会改进答案。 -
Contains在生成的 SQL 查询中转换为LIKE语句。事实上,LIKE是区分大小写还是不区分大小写取决于数据库配置。更改您的数据库以执行不区分大小写的字符串比较并使用Contains。 -
这是一个实体框架datacontext,其中Group为DbSet
-
如果它不是 SqlFunctions msdn.microsoft.com/de-de/library/… 的一部分,您必须使用 LINQ 对象来查询实体。
-
实际上里面包含方法我认为他们正在检查相同的功能索引然后为什么实体框架抛出异常。
标签: c# .net linq entity-framework