类型'system.string'不支持序列运算符

时间:2012-05-25 11:38:19

标签: linq linq-to-sql

此查询中的问题是什么

              var ptypes = (from mf in _pagecontext.PagesRefs
                let a = mf.nvcr_Slug.Substring(mf.nvcr_Slug.LastIndexOf("/") + 1)  // gets everything after /
                let b = Regex.Replace(a, @"[\d-]+$", m => m.Value.Replace('-', '='))   // replace last char with =
                let cc = (b.Contains('=') ? b.Substring(0, b.IndexOf("=")) : b) // strip off everything before = to get original string
                let cm = stroriginal  // string to search
                where cm.Equals(cc)
                select mf); 

nvcr_slug可能是

mazhar-kaunain-baig-3-4
mazhar-kaunain-baig-3-4/mazhar-kaunain-baig-3-4
mazhar-kaunain-baig-3-4/mazhar-kaunain-baig-3-4/mazhar-kaunain-baig
abc
abc/abc
abc/abc/abc

2 个答案:

答案 0 :(得分:1)

更新:

根据您的评论 - 我认为这应该有效:

let b = Regex.Replace(a, @".$", '=')

在使用LINQ的集合的每次迭代中,您只处理一个值 - 上面应该捕获给定字符串中的最后一个字符并将其替换为=


我能想到的第一件事是方法Contains的LINQ和System.String实现之间的冲突:

b.Contains('=')

尝试显式使用System.String.Contains。

答案 1 :(得分:1)

使用

let cc = (b.Contains("=") ? b.Substring(0, b.IndexOf("=")) : b)

然后试试。