Cod*_*-EZ 10 .net c# linq entity-framework
我已经使用如下的Entityframework执行了linq查询
GroupMaster getGroup = null;
getGroup = DataContext.Groups.FirstOrDefault(item => keyword.IndexOf(item.Keywords,StringComparison.OrdinalIgnoreCase)>=0 && item.IsEnabled)
Run Code Online (Sandbox Code Playgroud)
执行此方法时,我得到如下的异常
LINQ to Entities无法识别方法'Int32 IndexOf(System.String,System.StringComparison)'方法,并且此方法无法转换为商店表达式.
默认情况下包含()方法区分大小写,所以我需要转换为lower.Is有任何方法检查除contains方法之外的字符串匹配,是否有任何方法来解决indexOf方法问题?
你真的只有四种选择.
除非结果集非常小,否则数字4不是一个好的选择.如果你不能改变数据库(但你不能使用Linq),#3是好的.
数字1和2是您需要对整个数据模型做出的选择,或者您只想在特定字段上进行选择.
更改服务器排序规则:http: //technet.microsoft.com/en-us/library/ms179254.aspx
更改数据库排序规则:http: //technet.microsoft.com/en-us/library/ms179254.aspx
更改列排序规则:http://technet.microsoft.com/en-us/library/ms190920( v = sql.105).aspx
在存储过程中使用Collate语句:http: //technet.microsoft.com/en-us/library/ms184391.aspx
相反,您可以使用下面的此方法来降低案例:
var lowerCaseItem = item.ToLower();
Run Code Online (Sandbox Code Playgroud)
如果您的商品类型为string. 那么这可能会让你度过那个例外。
小智 5
IndexOf实体框架无法识别字符串类的方法,请将该函数替换为SQLfunction或Canonical函数
您可以使用以下代码示例:
DataContext.Groups.FirstOrDefault(item =>
System.Data.Objects.SqlClient.SqlFunctions.CharIndex(item.Keywords, keyword).Value >=0 && item.IsEnabled)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11569 次 |
| 最近记录: |