繁体   English   中英

“字符串”不包含“包含”的定义

[英]'string' does not contain a definition for 'Contains'

我有这样的声明:

var vals =
    from StandAloneUserPayment saup in _Session.Query<StandAloneUserPayment>()
        .Fetch(x => x.RecurringPayments)
    where
        saup.User.UserId == userId
        && searchString.Contains(saup.FriendlyName, StringComparer.InvariantCultureIgnoreCase)
    select
        saup;

这似乎正是我应该执行的操作,但是通过Contains以下消息的下划线的Contains方法得到了整行:

string不包含Contains的定义,并且最佳扩展方法重载System.Linq.ParallelEnumerable.Contains<TSource>(System.Linq.ParallelQuery<TSource>, TSource, System.Collections.Generic.IEqualityComparer<TSource>)论点

我究竟做错了什么?

尝试IndexOf

searchString.IndexOf(saup.FriendlyName,
                     StringComparison.InvariantCultureIgnoreCase) != -1

之所以不起作用,是因为接受IEqualityComparer<TSource>Contains扩展方法是在String上操作的,该方法实现IEnumerable<char> ,而不是IEnumerable<string> ,因此stringIEqualityComparer<string>可以实现不会被传递给它。

即使有一个Contains(source,item,比较器)方法,您也不能*将它与NHibernate一起使用,因为比较器是代码,而不是NH可以翻译的表达式树。

*:也就是说,除非您编写一个为比较器生成特殊情况的LINQ提供程序扩展,否则并非如此。

您正在使用的.Contains来自LINQ-它将字符串视为IEnumerable<char> ,因此它需要IEqualityComparer<char> StringComparer比较器实现IEqualityComparer<String>

如果minitech的IndexOf方法有效,我认为这将是最简单的方法。

将以下名称空间添加到您的类中,

using System.Linq;

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM