gpt4 book ai didi

c# - Linq to 实体忽略大小写,NotSupportedException

转载 作者:行者123 更新时间:2023-11-30 20:39:04 26 4
gpt4 key购买 nike

我需要在忽略大小写的情况下从数据库上下文中查找项目,但无法正常工作,到目前为止我尝试过的是:

var interestingItem = ctx.MyItems.FirstOrDefault(x => 
x.Name.IndexOf(item.Name, StringComparison.OrdinalIgnoreCase) >= 0);

还有:

var interestingItem = ctx.MyItems.FirstOrDefault(x => 
string.Equals(x.Name, item.Name, StringComparison.InvariantCultureIgnoreCase));

我也尝试过应用 ToLowerInvariant(),但总是得到:

An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

Additional information: LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String, System.StringComparison)' method, and this method cannot be translated into a store expression.

最佳答案

您使用的两种方法都不能转换为 SQL。您需要使用 string.Compare 方法,该方法采用 bool 型 IngoreCase 变量:

var interestingItem = ctx.MyItems.FirstOrDefault(x => 
string.Compare(x.Name, item.Name, true) == 0));

或者,您可以在比较之前将两个字符串都转换为小写。

关于c# - Linq to 实体忽略大小写,NotSupportedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34632243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com