c# - 将 list 框项目与数组进行比较

标签 c# arrays winforms for-loop checklistbox

所以,我有一个包含如下字符串值的 list 框:

  • asdf-432-qwer-vcxz
  • rewq-123-qwer-vcxz
  • rety-323-qw65-vcyt
  • kjhf-232-ouyy-bjkl
  • ...

我有一个数组(onlineVaults),其中包含一些与 list 框中相同的值,例如:

  • rety-323-qw65-vcyt
  • asdf-432-qwer-vcxz

现在我只想检查检查列表框中数组中的那些值。其他的不要勾选。

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    if (onlineVaults.Contains(checklistbox.Items[i]))
    {
        checklistbox.SetItemChecked(i, true);
    }
}

我试过这样弄明白,但它不起作用。它只检查一个值,不检查其他任何值。我该怎么办?

最佳答案

试试这个

var checklistbox = new List<string>
{
     "asdf-432-qwer-vcxz",
     "rewq-123-qwer-vcxz",
     "rety-323-qw65-vcyt",
     "kjhf-232-ouyy-bjkl"
};
var onlineVaults = new List<string>
{
     "rety-323-qw65-vcyt",
     "asdf-432-qwer-vcxz"
};

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    checklistbox.SetItemChecked(i, onlineVaults.Contains(checklistbox.Items[i]));            
}

编辑:

要忽略大小写和修剪值,试试这个

for (int i = 0; i < checklistbox.Items.Count; i++)
{
    checklistbox.SetItemChecked(i, IsValueExist(onlineVaults, checklistbox.Items[i]));            
}

private bool IsValueExist(List<string> list, string value)
{
    return list.Any(x => string.Compare(x.Trim(), value.Trim(), StringComparison.InvariantCultureIgnoreCase) == 0);        
}

关于c# - 将 list 框项目与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31918241/

相关文章:

c# - 使用 LinqToXSD,如何在不强制转换的情况下获取 xml 中的对象?

Conway 的生命游戏 (C) - 坐标不对应于 2D 数组索引?

php - 从排序数组 PHP 返回键的顺序

java - 使用多维数组进行矩阵乘法 Java

c# - 为自定义用户控件创建工具提示

C# 如何从字符串变量创建对象名称

c# - 忽略 Web 服务中的证书错误?

c# - SECURITY_ATTRIBUTES 何时更改,为什么更改?

c# - 限制winforms中复选框控件的可点击区域

c# - 如果文本不存在,如何在文本后添加字符串?