![](/img/trans.png)
[英]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.