为什么 StringComparison.InvariantCultureIgnoreCase 在 where 子句中抛出异常

西蒙斯

我正在尝试做一个字符串同情如下:

var nDetails = listOfServiceUrls.Where(x => String.Equals(x.Description,  
serviceName,StringComparison.InvariantCultureIgnoreCase));

但得到例外,

System.ArgumentException:为调用方法“Boolean Equals(System.String, System.String, System.StringComparison)”提供的参数数量不正确

如果我删除 where 子句,它就可以正常工作!!

 var nDetails = listOfServiceUrls.Where(x => String.Equals(x.Description,serviceName));
基里尔·施伦斯基

您必须使用实体框架或类似技术,它们实际上需要解释作为Where方法参数提供的表达式它只会翻译基类库(标准 .NET 库)方法及其重载的一小部分。

将光标悬停listOfServiceUrls在代码编辑器中的变量上,看看它是什么类型。我的钱是基于它IQueryable<string>(而不是IEnumerable<string>的事实

EF 似乎对 上的实例Equals(string, StringComparison)方法进行了翻译System.String,因此您可以按如下方式重写代码:

var nDetails = listOfServiceUrls.Where(
    x => x.Description.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));

不像.NET,你会不会看到NullReferenceException,如果任何集合中的字符串恰好是NULL-因为谓词由SQL Server而不是在.NET运行时执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

where子句中的未知列。为什么?

为什么在WHERE子句中忽略OR?

通常最好使用哪种-StringComparison.OrdinalIgnoreCase或StringComparison.InvariantCultureIgnoreCase?

为什么 ON 子句和 WHERE 子句中的条件使结果不同?

为什么得到“ where子句中的未知列'Jacob'”?

为什么“where”子句中的标量值函数变慢?

哪个更好用?使用To.Lower()。EndsWith(value)或To.EndsWith(value,StringComparison.InvariantCultureIgnoreCase)

StringComparison,为什么“ TH”不以“ T”开头

select语句中带参数化where子句的PreparedStatement抛出异常

SQlite 不会在 where 子句中为未知列抛出异常

为什么某些Where子句被忽略?

为什么此查询忽略WHERE子句?

为什么 CROSS JOIN 条件在“ON”子句中不起作用,而只能在 WHERE 子句中起作用?

在 CTE 的 Hana 查询中,为什么 WHERE 子句中的类型转换失败(尽管它在 SELECT 子句中成功)

为什么在where子句中使用范围类型变量的此函数为什么不进行typecheck?

为什么我的SQL语句在WHERE子句中显示未知列

为什么我需要在WHERE子句中每次都定义表名?

为什么在mysql where子句中忽略“ -1”“ name = 123456789123456789-1”

在where子句中定义以下函数时,为什么不在范围内?

为什么where子句中不允许使用聚合函数

为什么在 where 子句中的字段周围添加括号会加速我的 SQL 查询?

为什么 Snowflake 在 WHERE 子句中排除匹配的 NULL 值?

为什么小数字段在where子句中接受字母?

SQL Server 2012:为什么where子句中的不同值将阻止选择查询?

为什么可以在WHERE子句中使用别名?(Oracle XE 11g)

为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?

为什么此Where子句中的空格不会引起语法错误?

为什么SQL生成器在where子句中使用双括号?

Oracle Apex 5 - where 子句中的复选框列表不起作用,为什么?