1

我正在尝试通过 csv 字符串进行解析,将结果放入 IList 集合中,然后尝试根据传入的内容找到一种方法来执行通配符“包含”。现在我有以下内容:

    public static IList<string> DBExclusionList
    {
        get 
        {
            Regex splitRx = new Regex(@",\s*", RegexOptions.Compiled);
            String list = (string)_asr.GetValue("DBExclusionList",typeof(string)); 
            string[] fields = splitRx.Split(list); 
            return fields; 
        }
    }
    if (DBExclusionList.Contains(dbx.Name.ToString())==false)
    {...}

因此,如果我正在解析的字符串(来自 .config 文件的键值)包含: key="DBExclusionList" value="ReportServer,ReportServerTempDB,SQLSentry20,_TEST"

DBExclusionList.Contains() 对于列表中前 3 项的完全匹配非常有效,但我希望能够将它用于第四项“_TEST”的任何部分匹配

有什么办法吗?我当然可以对其进行硬编码以始终排除任何内容,但我宁愿不这样做。

谢谢。

4

3 回答 3

3

使用 Linq:

if (DBExclusionList.Any(s => s.Contains(dbx.Name.ToString())))
于 2009-09-25T15:06:04.030 回答
2

由于您使用的是 .NET 3.5,因此您可以使用 Where() LINQ 扩展方法:

DBExclusionList.Where(item => item.Contains(dbx.Name.ToString()))
于 2009-09-25T15:04:00.460 回答
0

不要使用正则表达式进行拆分。用分号之类的东西来使用string.Split()和分隔你。_asr.GetValue("DBExclusionList)

中的每个项目都_asr.GetValue("DBExclusionList)应该是一个正则表达式模式,因此您依次检查每个项目。

于 2009-09-25T15:05:13.937 回答