无论如何,要使 IList.Contains() 的行为更像通配符包含?

发布于 2024-08-06 06:44:27 字数 778 浏览 3 评论 0原文

我正在尝试解析 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)
    {...}

所以如果字符串我am 解析(.config 文件中的键值)包含: key="DBExclusionList" value="ReportServer,ReportServerTempDB,SQLSentry20,_TEST"

DBExclusionList.Contains() 对于列表中前 3 项的精确匹配效果非常好,但我希望也能够将其用于任何部分第四项'_TEST'的匹配

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

谢谢。

I am trying to parse thru a csv string, put the results into a IList collection and then trying to find a way to do a wildcard 'contains' based on what was passed in. Right now I have the following:

    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)
    {...}

So if the string I am parsing (key value from .config file) contains:
key="DBExclusionList" value="ReportServer,ReportServerTempDB,SQLSentry20,_TEST"

The DBExclusionList.Contains() works very well for exact matches on the first 3 items in the list, but I want to be able to ALSO have it for any partial match of the fourth item '_TEST'

is there any way to do it? I could certainly hardcode it to always exclude whatever but I'd rather not.

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寂寞笑我太脆弱 2024-08-13 06:44:27

使用 Linq :

if (DBExclusionList.Any(s => s.Contains(dbx.Name.ToString())))

Using Linq :

if (DBExclusionList.Any(s => s.Contains(dbx.Name.ToString())))
梨涡 2024-08-13 06:44:27

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

DBExclusionList.Where(item => item.Contains(dbx.Name.ToString()))

Since you're using .NET 3.5, you could use the Where() LINQ extension method:

DBExclusionList.Where(item => item.Contains(dbx.Name.ToString()))
傲鸠 2024-08-13 06:44:27

不要使用正则表达式来分割。使用 string.Split() 并使用分号等分隔 _asr.GetValue("DBExclusionList)

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

Don't use regex to split. Use string.Split() and delimit your _asr.GetValue("DBExclusionList) with something like semi-colons.

Each item in _asr.GetValue("DBExclusionList) should be a regex pattern, so you check against each one in turn.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文