C# 将列表框中的文本一起计数

C# 将列表框中的文本一起计数,c#,sorting,listbox,format,C#,Sorting,Listbox,Format,大家好,我的社区, 我有以下问题。 我用这种格式创建了一个列表框(数据总是不同的): 但现在我想把它分类,然后像这样一起计算: 4 x item1 2 x item2 1 x item3 我只是想不出一个方法,能够做到这一点与动态文本。提前感谢您的帮助。假设您的列表框内容仅由字符串组成,或者可以通过它们的ToString()进行区分 您可以创建字典并将每个条目添加到其中。然后在值字段中计算它们: Dictionary<string, int> counts = new Dictio

大家好,我的社区, 我有以下问题。 我用这种格式创建了一个列表框(数据总是不同的):

但现在我想把它分类,然后像这样一起计算:

4 x item1
2 x item2
1 x item3

我只是想不出一个方法,能够做到这一点与动态文本。提前感谢您的帮助。

假设您的列表框内容仅由字符串组成,或者可以通过它们的
ToString()
进行区分

您可以创建字典并将每个条目添加到其中。然后在值字段中计算它们:

Dictionary<string, int> counts = new Dictionary<string, int>();
foreach(var i in listBox1.Items)
{
    if (!counts.ContainsKey(i.ToString()))
        counts.Add(i.ToString(), 0);
        counts[i.ToString()]++;
    }
}
字典计数=新建字典();
foreach(listBox1.Items中的变量i)
{
如果(!counts.ContainsKey(i.ToString()))
counts.Add(i.ToString(),0);
计数[i.ToString()]++;
}
}
然后,您可以将它们全部打印出来,与此类似(需要最新的C#版本):

foreach(计数中的KeyValuePair条目)
WriteLine($“{entry.Value}x{entry.Key}”);

您可以找到自己的解决方案来对字典中的数据进行排序。请注意,字典中的数据不能在这个类中排序,因为字典不跟踪任何顺序。然而,Linq有一种解决方法:

你试过什么吗?可能的复制似乎是GroupBy和Count的组合。尝试编写一些代码,看看这是否解决了您的问题。
Dictionary<string, int> counts = new Dictionary<string, int>();
foreach(var i in listBox1.Items)
{
    if (!counts.ContainsKey(i.ToString()))
        counts.Add(i.ToString(), 0);
        counts[i.ToString()]++;
    }
}
foreach (KeyValuePair<string, int> entry in counts)
    Console.WriteLine($"{entry.Value}x {entry.Key}");