'string'不包含'Contains'的定义

Jer*_*acs 9 c# linq nhibernate linq-to-nhibernate

我有这样的声明:

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;
Run Code Online (Sandbox Code Playgroud)

这似乎正是我应该做的,但是我Contains用下面的消息下划线方法得到整行:

string不包含定义,Contains并且最好的扩展方法重载System.Linq.ParallelEnumerable.Contains<TSource>(System.Linq.ParallelQuery<TSource>, TSource, System.Collections.Generic.IEqualityComparer<TSource>)有一些无效的参数

我究竟做错了什么?

Ry-*_*Ry- 17

试试IndexOf:

searchString.IndexOf(saup.FriendlyName,
                     StringComparison.InvariantCultureIgnoreCase) != -1
Run Code Online (Sandbox Code Playgroud)

它不起作用的原因是因为Contains接受a 的扩展方法IEqualityComparer<TSource>在a上运行String,而IEnumerable<char>不是实现IEnumerable<string>a,因此a string和a IEqualityComparer<string>不能传递给它.

  • @JeremyHolovacs:哦是的,我刚才意识到'包含'的原因不起作用; `String.Contains`是一个特例,因为`string`是一个`IEnumerable <char>`,而不是一个`IEnumerable <string>`. (2认同)