关于c#:’string’不包含’Contains’的定义

'string' does not contain a definition for 'Contains'

我有一个这样的声明:

1
2
3
4
5
6
7
8
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方法的整行,下面的消息加下划线:

string does not contain a definition for Contains and the best extension method overload System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery, TSource, System.Collections.Generic.IEqualityComparer) has some invalid arguments

我做错什么了?


IndexOf试试:

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

它不是工作的原因是因为Contains扩展方法是接受一IEqualityComparer是操作在String,这不IEnumerableIEnumerable实现,操作系统,和一StringIEqualityComparer会通过它。


即使有一个(项目源,比较器,You Can’t)的方法,使用的是*与NHibernate的代码比较器,是树,是不可以翻译的NH的表达。

*:这是LINQ的供应商,除非你写的是扩展你的比较器生成特殊案例,但是这是没有的情况。


你是你吃的。包含来自它使用LINQ的这一IEnumerable字符串,所以它需要一IEqualityComparerIEqualityComparerStringComparer比较器实现的。

如果IndexOf敏驰科技法的作品,我认为将是最easiest的方式。


添加以下命名空间到您的类。

1
using System.Linq;

希望它帮助。