'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会通过它。
- 我和你都会提高。它告诉我,我已经overloads三。
- 和一个jeremyholovacs":他们以StringComparer吗?(对不起,我不能现在就尝试的MSDN,但通常是正确的……)
- 的错误消息意味着,它需要一个IEqualityComparerStringComparer,器具。
- -你确定你jeremyholovacs"是不是用一些第三方扩展这类用品的额外的方法吗?
- 方法的改进jeremyholovacs"吗?
- 我认为这是一个部分的数据。
- "jeremyholovacs:好……这是奇怪的。好的,试试IndexOf反正。
- 我说:(extention) bool IEnumerable.Contains(char value, IEqualityComparer comparer)IntelliSense。
- "它让我IndexOf敏驰科技发展的"最佳匹配"的方法string.indexof过重(字符串,一些无效的参数system.stringcomparison)’……"我抓我的头在这。
- 哈哈没关系我一个傻瓜,如果我改变StringComparerIndexOf厂到StringComparison……虽然不是Contains仍然工作。好的,它的足够好的话给我,谢谢。
- "这是saup.UserPaymentstringjeremyholovacs:真的吗?
- "jeremyholovacs:哦,是的,我刚刚意识到的原因不是工作Contains;String.Contains是一特殊案例,因为stringIEnumerableIEnumerable,不安。
- 你能扩大你的回答@敏驰科技来解释吗?它可能是有用的在未来的人抓他们的头。这是我的答案标记;谢谢。
- "当然,jeremyholovacs:对不起。
- 那他妈的这是病吗?在美国/文章/图书馆/ dy85x1sa.aspx
- "保罗- sebastianmanole:文档的方法,以一个名为Contains在线string参数,其中,第二,它为IEqualityComparer,是不安。
即使有一个(项目源,比较器,You Can’t)的方法,使用的是*与NHibernate的代码比较器,是树,是不可以翻译的NH的表达。
*:这是LINQ的供应商,除非你写的是扩展你的比较器生成特殊案例,但是这是没有的情况。
- 奇怪的是我对铅的感知问题。该指数是我工作的需要,但它应该看起来像那样的工作。
你是你吃的。包含来自它使用LINQ的这一IEnumerable字符串,所以它需要一IEqualityComparer。IEqualityComparerStringComparer比较器实现的。
如果IndexOf敏驰科技法的作品,我认为将是最easiest的方式。
添加以下命名空间到您的类。
希望它帮助。