foreach 某些项目在列表框中 - Winform,C#

Posted

技术标签:

【中文标题】foreach 某些项目在列表框中 - Winform,C#【英文标题】:foreach Certain item is in a ListBox - Winform, C# 【发布时间】:2020-08-06 04:17:30 【问题描述】:

我想知道如何找到某个项目在列表框中出现的次数

foreach (string Item in listBox1.Items) 

    Console.WriteLine("1 Item");

Console.ReadLine();

不幸的是,它会循环遍历整个列表框。我只想要某件物品。

【问题讨论】:

如果列表项是字符串类型,只需Console.WriteLine(listBox1.Items.Cast<string>().Count(x => x == "1 Item")); 这能回答你的问题吗? How to count the number of elements that match a condition with LINQ 【参考方案1】:

假设listBox1.Items : List<string> or string[] ...

选项 1: listBox1.Items.Count(item => item == "YourCertainItem");

你可以使用 Linq

选项 2: listBox1.Items.Where(item => item == "YourCertainItem").Count();

【讨论】:

【参考方案2】:

这取决于您绑定到 ListBox 的数据类型和类型唯一标识符(或您要用于比较的属性)。

例如,如果您已将一个字符串列表绑定到列表框,则可以使用

var result = listBox.Items.OfType<String>().Count(x=>x == valueToSearch);

相反,如果您已将 Person 类型的 Collection 绑定到 ListBox,其中 Person.Id 是您要用于比较的属性,您可以使用

var result = listBox1.Items.OfType<Person>().Count(x=>x.Id == personToSearch.Id);

您需要首先定义比较 ListBox 中项目的属性,然后您可以使用 Linq,如上面的示例所示。

【讨论】:

以上是关于foreach 某些项目在列表框中 - Winform,C#的主要内容,如果未能解决你的问题,请参考以下文章

对列表框中的项目列表进行排序

从 WPF 中的列表框中获取复选框项目

VBA - 从列表框中删除空项目

转换为列表时从数据框中删除某些列

如何删除组合框中的所有项目? [关闭]

通过列表框中的某些文本分隔字符串