c# - 根据 ListView 项过滤字符串集合

标签 c# winforms string listview collections

已解决

奇怪的是,似乎这里发生的事情是 string[] 集合在没有元素时被迭代。因此,每个项目都会从用户列表中删除。添加了额外的检查以确保 nicks.Count !=0,它添加并完美运行。当代码执行您意想不到的事情时一定要喜欢 ;)

---[初始问题]---

所以,我在这里有点困惑。

当我们连接到我们的服务器时,我们得到一个字符串收集结果string[]。然后我们解析该字符串集合,并将名称添加到 ListView 。但是,我们还需要解析 ListView ,并删除所有未出现在字符串集合中的项目。

我似乎想不出一个正确的方法来做到这一点。我知道这很容易,但到目前为止我尝试过的任何事情都失败了,这完全不酷:(

将字符串集合过滤到 ListView 且不添加重复项的代码:

foreach (var nick in nicks)
        {
            if (string.IsNullOrEmpty(nick)) continue;
            var lvi = new ListViewItem
                          {
                              Text = nick,
                              Group = nick.StartsWith("@") ? listViewEx1.Groups[0] : listViewEx1.Groups[1]
                          };
            if (listViewEx1.Items.Count != 0)
            {
                var foundItem = listViewEx1.FindItemWithText(nick, true, 0, false);
                if (foundItem != null) continue;
            }
            lvi.ImageIndex = 0;
            listViewEx1.Items.Add(lvi);
        }

那么,如何将 ListView 中的项目与字符串集合中的项目进行反向比较,并删除不存在的项目?

调试信息

Element in 'nicks':   Bot
Element in 'nicks':   Test
Element in 'nicks':   @Mike
Element in 'nicks':   @Jack
Element in 'nicks':   Joe
Element in 'nicks':   Nancy
Element in 'nicks':   Roger
Element in 'nicks':   
Does not contain:  @Mike
Does not contain:  @Jack
Does not contain:  Bot
Does not contain:  Joe
Does not contain:  Test
Does not contain:  Nancy
Does not contain:  Roger

奇怪的是,即使 nicks[] 集合包含项目,并且 item.Text 包含昵称,.Contains() 调用不匹配。

最佳答案

如果这些只是简单的字符串,那么像这样的东西应该可以工作:

List<ListViewItem> itemsToRemove = new List<ListViewItem>();
foreach(ListViewItem item in listViewEx1.Items)
{
   if(!nicks.Contains(item.Text))
      itemsToRemove.Add(item.Text);
}

foreach(ListViewItem item in itemsToRemove)
   listViewEx1.Items.Remove(item);

单独删除循环的原因是您不想在迭代期间修改 Items 集合,否则会出现异常。

关于c# - 根据 ListView 项过滤字符串集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731932/

相关文章:

c# - 如何以编程方式在 DevExpress TreeList 中添加节点?

c# - child 用户控件中的 WPF 选项卡导航

c# - 关于 web service 和 asp.net 的问题

c# - 在c#中将图像转换为图形

c# - Datagridview 和选项卡控件问题

c# - 寻找一个用WinForms和/或建议重新设计设计实现的出色向导示例

python - 如何遍历字典列表的字符串表示形式的字典?

Android getResources().getStringArray() 变量

string - Postgresql COPY 空字符串为 NULL 不起作用

c# - 使用 C# 的 Excel/VSTO 中的列号到列字母