C# c如何对嵌套集合进行排序
我可能想得太多了,我迷路了。我是C新手,不知道解决这个问题的最佳方法是什么 string[]input=新字符串{FR_Paris,UK_London,UK_Bristol}; 控制台中的理想输出按国家/地区中城市的出现顺序排序,城市按字母顺序排序 在这种情况下: 英国2x布里斯托尔,伦敦 法国巴黎 我不会说谎,这是我的家庭作业。我知道如何解析输入,我认为城市必须使用一个可以排序但不知道是哪种类型的集合。当涉及到嵌套集合时,我有点不知所措 请至少给我一个方向 非常感谢 试试这个C# c如何对嵌套集合进行排序,c#,sorting,collections,C#,Sorting,Collections,我可能想得太多了,我迷路了。我是C新手,不知道解决这个问题的最佳方法是什么 string[]input=新字符串{FR_Paris,UK_London,UK_Bristol}; 控制台中的理想输出按国家/地区中城市的出现顺序排序,城市按字母顺序排序 在这种情况下: 英国2x布里斯托尔,伦敦 法国巴黎 我不会说谎,这是我的家庭作业。我知道如何解析输入,我认为城市必须使用一个可以排序但不知道是哪种类型的集合。当涉及到嵌套集合时,我有点不知所措 请至少给我一个方向 非常感谢 试试这个 // Init
// Init Array
string[] input = new string[] { "FR_Paris", "UK_London", "UK_Bristol" };
//Get All Codes
List<string> Codes = new List<string>();
foreach (var CityName in input)
{
var Name = CityName.Split('_')[0]; // Get Name After _ Paris
if (!Codes.Contains(Name))
Codes.Add(va);
}
// Print
foreach (var Code in Codes.OrderBy(x => x))
{
var AllNames = input.Where(x => x.StartsWith(Code + "_")).Select(x => x.Split('_')[1]);
Console.WriteLine(Code + " " + xd.Count() + "x " + string.Join(",", AllNames.OrderBy(x => x)));
}
你可以试试linq
使用LINQ:
var grouped = input
.Select(x => x.Split('_')) // Split all strings into array[2]
.GroupBy(x => x[0]) // Group by country
.OrderByDecending(x => x.Count()); // Order by number of cities
这回答了你的问题吗?首先,对每个国家进行计数,如果用“u”分隔,你可以分割字符串,得到它的ASCII码并将其存储在一个数组中,然后从该数组中获得计数。你可以使用正则表达式,但我可以在HomeWork中使用它,对于排序,你可以使用Linq内置的排序函数。法国巴黎、英国伦敦的字符串值是多少,还有UK_Bristol?您正在寻找的数据结构可能是一个,您可以使用@styx从数组中创建它,很好,很抱歉。我跳过了这篇文章编辑了不要给出变量名,比如va或xd,另外,你应该在循环外执行一次Codes.OrderByx=>x,为什么每次都这样做?Codes.OrderByx=>x不是每次都运行,它在foreach命中时只运行一次。非常感谢你们两位。。。我必须按发生率排序:英国2x布里斯托尔,伦敦FR 1x巴黎,但我会做其余的:
FR 1x Paris
UK 2x Bristol, London
var grouped = input
.Select(x => x.Split('_')) // Split all strings into array[2]
.GroupBy(x => x[0]) // Group by country
.OrderByDecending(x => x.Count()); // Order by number of cities