[英]How to sort an array based on the occurrences of the elements in a string in C#?
[英]How to sort a string array from maximum to minimum amount of that type of elements in c#?
对不起,标题令人困惑,我该如何排列这些元素:
string [] anArray = new string[50];
anArray[0] = "New York";
anArray[1] = "London";
anArray[2] = "New York";
anArray[3] = "London";
anArray[4] = "New York";
anArray[5] = "Chicago";
陷入这样的数组:
anArray[0] = "New York";
anArray[1] = "New York";
anArray[2] = "New York";
anArray[3] = "London";
anArray[4] = "London";
anArray[5] = "Chicago";
元素按数组中相等元素的数量排序。 例如,如果anArray具有相等数量的元素,例如:
anArray[0] = "New York";
anArray[1] = "New York";
anArray[2] = "London";
anArray[3] = "London";
我如何做才能使程序找到这两个元素并输出如下内容:纽约,元素数量2伦敦,元素数量2
希望您能理解,如果可能造成混淆,对不起,谢谢您的帮助。
也许不是最快的解决方案,但这是您所追求的逻辑。
var result = anArray.OrderByDescending(o => anArray.Count(c => c == o));
请注意,您使用的数组大小为50,因此由于orderby,前44个项目将为null
。
您可以按每个元素的数量排序
var orderedItems = anArray.OrderByDescending(x => x?.Count()).ToArray();
或者您可以按每个字符串的长度来执行
var orderedItems = anArray.OrderByDescending(x => x?.Length).ToArray();
如果array元素为null,则检查并返回null,并返回有序数组。
只需使用Linq GroupBy
string[] anArray = new string[50];
anArray[0] = "New York";
anArray[1] = "London";
anArray[2] = "New York";
anArray[3] = "London";
anArray[4] = "New York";
anArray[5] = "Chicago";
var GroupedArray = anArray.GroupBy(a => a);
foreach (var item in GroupedArray)
{
Console.WriteLine(item.Key + " -> " + item.Count());
}
Console.Read();
//NewYork -> 3
//London -> 2
//Chicago -> 1
附带说明一下,您将数组初始化为容纳50个项目,在我的示例中,groupby子句将考虑到44个空字符串项目。 如果要避免显示这些内容,请替换此行的groupby行:
var GroupedArray = anArray.GroupBy(a => a).Where(a => !string.IsNullOrEmpty(a.Key));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.