-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 b = Regex.Replace(a, @".$", '=')

LINQ を使用したコレクションの各反復では、1 つの値だけを処理します。上記では、指定された文字列の最後の文字をキャプチャして、=


最初に考えられるのは、次のメソッドの LINQ と System.String の実装の間の競合ですContains

b.Contains('=')

System.String.Contains を明示的に使用してみてください。

于 2012-05-25T12:28:03.090 に答える