如何在C#中按字母顺序对List <char []>进行排序?

时间:2018-05-17 19:16:48

标签: c# .net list sorting

我有一个字符串列表,我正在使用它们对它们进行排序:

if (SortedList[x].str[p].CompareTo(SortedList[x + 1].str[p]) > 0) //Sort the list
{
    Data aux = SortedList[x];
    SortedList[x] = SortedList[x + 1];
    SortedList[x + 1] = aux;
 }

str是字符串列表,但我必须将该列表转换为List<char[]>,现在我无法使用str.CompareTo()方法,因为这只是字符串...

我正在考虑创建一个字符串列表,将char[]转换为string并使用我正在使用的CompareTo()方法对其进行排序,然后再创建另一个List<char[]>通过转换已排序的字符串列表。

是否有更有效的方法来排序List<char[]>

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用LINQ?

stopped

输出:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var charList = new List<char[]>();

        // Initialize list of char array
        char[] array1 = { 's', 'a', 'm' };
        char[] array2 = { 's', 'm', 'i', 't', 'h' };
        char[] array3 = { 'c', 'o', 'o', 'l'};

        // Add them
        charList.Add(array1);
        charList.Add(array2);
        charList.Add(array3);

        Console.WriteLine("--Before sorting--");
        foreach (char[] item in charList) {
            Console.WriteLine(item);
        }

        // Sorting
        charList = charList.OrderBy(a => new string(a)).ToList();


        Console.WriteLine("--After sorting--");
        foreach (char[] item in charList) {
            Console.WriteLine(item);
        }
    }
}

在此测试:https://dotnetfiddle.net/wcYSAE

编辑:虽然根据你的问题我不清楚,通常当我必须对List进行排序时,我更喜欢使用C#提供的内容而不是重新发明轮子。关于性能,其他C#专家可以为我们解答。

答案 1 :(得分:0)

为什么不使用Sort?如Aominè

所述
// Declare Sentence Variable
string sentence = "The quick brown fox jumps over the lazy dog";
// Initialize New List of type char
List<char> charList = new List<char>();
// Remove Spaces and Lowercase all Letters and Add to List
charList.AddRange(sentence.Replace(" ", string.Empty).ToLower());
// Sort List<char>()
charList.Sort();
// Output Statements
Console.WriteLine($"Before: {sentence}");
Console.WriteLine($"After: {new string(charList.ToArray())}");

输出:

Before: The quick brown fox jumps over the lazy dog
After: abcdeeefghhijklmnoooopqrrsttuuvwxyz