-1

这个查询有什么问题

              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
4

2 回答 2

1

利用

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

并尝试。

于 2013-06-03T20:02:24.900 回答
1

更新:

根据您的评论 - 我认为这应该可行:

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

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


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

b.Contains('=')

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

于 2012-05-25T12:28:03.090 回答