我正在尝试做一个字符串同情如下:
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] 删除。
我来说两句