此查询中的问题是什么
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
答案 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)
然后试试。