我有一系列邮政编码。如何获取数组中每个唯一邮政编码的列表,然后计算唯一邮政编码在数组中出现的次数?
我看到了这个:
我有一种预感,这是解决我的问题的方法,但我不太明白。有人可以告诉我这是不是
- 确实是最好的方法。和
- 告诉我如何将数组放入 List 以便我可以利用 GroupBy?
我有一系列邮政编码。如何获取数组中每个唯一邮政编码的列表,然后计算唯一邮政编码在数组中出现的次数?
我看到了这个:
我有一种预感,这是解决我的问题的方法,但我不太明白。有人可以告诉我这是不是
这应该适合你:
var zips = new string[] { "12345", "12345", "54321" };
var groups = zips.GroupBy(z => z);
foreach(var group in groups)
Console.WriteLine("{0} -> {1}", group.Key, group.Count());
应该给你:
12345 -> 2
54321 -> 1
driis 实际上可以帮助您完成大部分工作。我刚刚发布了这个来帮助展示如何枚举组。
您应该使用 Where 仅选择 count == 1 的条目并使用 Select 列出值,然后使用 ToList() 返回一个列表。
它会是这样的:
List<string> uniqueZips = zips.GroupBy(z=>z).Where(z => z.Count() == 1).Select(z => z.Key).ToList();
在网上搜索 101 个 linq 例子,它给了你很多常见的例子。
GroupBy 适用于IEnumerable<T>
,因此也适用于数组(数组实现 IEnumerable)。GroupBy 根据键对对象进行分组。这里的关键是邮政编码本身;所以你可以传入一个映射到它的委托:
var zips = new string []{"8000", "9000"}
var uniqueZips = zips.GroupBy(x => x);
现在,uniqueZips
是一个IGrouping<string,string>
,其中键是邮政编码,元素的数量是该邮政编码的出现次数。