“串”不包含定义“包含”('string' does not contain a d

2019-07-31 11:16发布

我有像这样的声明:

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不包含定义Contains和最佳的扩展方法过载System.Linq.ParallelEnumerable.Contains<TSource>(System.Linq.ParallelQuery<TSource>, TSource, System.Collections.Generic.IEqualityComparer<TSource>)有一些无效参数

我究竟做错了什么?

Answer 1:

尝试IndexOf

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

它不工作的原因是因为Contains接受的扩展方法IEqualityComparer<TSource>是上的操作String ,它实现IEnumerable<char> ,不IEnumerable<string> ,所以stringIEqualityComparer<string>可以” T为传递给它。



Answer 2:

即使有一个蕴含(源,项目,比较器)方法,你不能*使用与NHibernate,因为comparers的代码,而不是表达式树是NH可以翻译。

*:那就是,除非你写一个LINQ提供程序的扩展,特殊情况下,代您比较器,但事实并非如此。



Answer 3:

您正在使用的。载有来自LINQ -它看到字符串作为IEnumerable<char> ,所以希望有一个IEqualityComparer<char> 。 所述StringComparer comparers实现IEqualityComparer<String>

如果MiniTech移动的IndexOf方法的工作,我认为这将是最简单的方法。



Answer 4:

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

using System.Linq;

希望能帮助到你。



文章来源: 'string' does not contain a definition for 'Contains'