我如何使用Dictionary.Any(Function(x))与List(of(keyvaluepair(String,String))VB.NET

时间:2018-11-20 21:27:26

标签: vb.net list linq dictionary keyvaluepair

我当前正在使用以下代码,并且效果很好,从与字典中的关键字匹配的Word文档中获取段落时,唯一的问题是字典不允许重复,我想知道我可以像在where子句中使用字典一样使用List(of(keyvaluepair(of string,string))。

示例: 除某些字典外,它可以与字典完美地配合使用,密钥中的重复项与我需要放置的值相同。

    filelistDict.Add("date", "Date")
    filelistDict.Add("july", "Date")
    filelistDict.Add("1", "Date")
    filelistDict.Add("1", "Number")
    filelistDict.Add("one", "Number")


        Dim matchQuery4 = From para As Paragraph In doc.Paragraphs
                          Where filelistDict.Any(Function(s) Regex.IsMatch(para.Range.Text, "(_|-)" + Regex.Escape(s.Key) + "|\b" + Regex.Escape(s.Key) + "\b|" + Regex.Escape(s.Key) + "(_|-)", RegexOptions.IgnoreCase))
                          Select para

我希望获得相同的结果,但要使用下面的列表,该列表允许重复,但我不知道如何在linq代码中实现。

 Dim WordsDictionary As List(Of KeyValuePair(Of String, String))

 Dim matchQuery4 = From para As Paragraph In doc.Paragraphs
                          Where WordsDictionary.Any(Function(s) Regex.IsMatch(para.Range.Text, "(_|-)" + Regex.Escape(s.Key) + "|\b" + Regex.Escape(s.Key) + "\b|" + Regex.Escape(s.Key) + "(_|-)", RegexOptions.IgnoreCase))
                          Select para

0 个答案:

没有答案