C# 排序数组包含使用c数组的数字字符串

C# 排序数组包含使用c数组的数字字符串,c#,arrays,sorting,C#,Arrays,Sorting,请参考以下数组 字符串[]numArray={2,3,1,7,9,2,1} 我们需要按数字对数组进行排序,并返回排序后的数组,如 string[] output = {"one","one","two","two","three","seven","nine"}; 请仅使用字符串数组或任何方法建议c代码中的最佳逻辑。您可以在字典中存储数字,其中键为字符串(例如2),值为整数(例如2)。通过使用LINQ,您可以首先用数字替换输入数组中的字符串,然后用OrderBy对它们进行排序。对数字进行排序后

请参考以下数组

字符串[]numArray={2,3,1,7,9,2,1}

我们需要按数字对数组进行排序,并返回排序后的数组,如

string[] output = {"one","one","two","two","three","seven","nine"};

请仅使用字符串数组或任何方法建议c代码中的最佳逻辑。

您可以在字典中存储数字,其中键为字符串(例如2),值为整数(例如2)。通过使用LINQ,您可以首先用数字替换输入数组中的字符串,然后用OrderBy对它们进行排序。对数字进行排序后,可以将数字转换回字符串:

Dictionary<string, int> numbers = new Dictionary<string, int>() {
    { "one", 1 },
    { "two", 2 },
    { "three", 3 },
    { "four", 4 },
    { "five", 5 },
    { "six", 6 },
    { "seven", 7 },
    { "eight", 8 },
    { "nine", 9 },
};

string[] wordArray = { "two", "three", "one", "seven", "nine", "two", "one" };

var numberArray = Enumerable.Range(0, wordArray.Length)
                            .Select(i => numbers[wordArray[i]])
                            .OrderBy(x => x).ToArray();

var output = Enumerable.Range(0, numberArray.Length)
                       .Select(i => numbers.FirstOrDefault(x => x.Value == numberArray[i]).Key)
                       .ToArray();

Output={1,1,2,2,3,7,9}

为了能够排序,您需要给出一个实际的顺序。字符的顺序通常是a,b,c,。。。通常在“一”等词上给出的顺序称为“一”。然而,您想要按照后面的含义进行排序,它的语义是:整数

你的计算机不知道你想要这个,所以你需要提供它的意思,这是通过一个函数,从技术上来说就是一个字典

计算机内置了整数的顺序,在通常的数学中,它也内置于标准整数中。因此,您需要提供一个一对一的函数,例如,一个字典,或者一个uple列表,例如,list,这样您就可以从整数对等词中对单词进行排序。您还可以用字母映射单词:one-a,two-b。。。当你到达z,你继续aa,这是基数27。您也可以使用位base2、base64等执行此操作,但始终存在一个带有整数的映射


依我看,理解比了解更重要。现在,您可以编写许多解决方案。

这对我来说似乎是家庭作业。将数字名称转换为数值,并按数值排序。您尝试了什么,代码在哪里?@SENTHILVEL不是代码编写服务。我们不会为您编写代码,因为StackOverflow不是代码编写服务。