排序列表<keyValuePair <string,string >>

sud*_*shu 4 .net c#

我这样做C# .net2.0 我有一个包含两个字符串的列表,我想对它进行排序.列表就像List<KeyValuePair<string,string>>

我必须根据第一个排序string,这是:

  • ACC
  • ABLA
  • SUD
  • FLO
  • IHNJ

我尝试使用Sort(),但它给了我例外:"无效的操作异常","无法比较数组中的两个元素".

无论如何我能建议我这样做吗?

Dan*_*rth 8

当您遇到.NET 2.0时,您将不得不创建一个实现IComparer<KeyValuePair<string, string>>并将其实例传递给该Sort方法的类:

public class KvpKeyComparer<TKey, TValue> : IComparer<KeyValuePair<TKey, TValue>>
    where TKey : IComparable
{
    public int Compare(KeyValuePair<TKey, TValue> x,
                       KeyValuePair<TKey, TValue> y)
    {
        if(x.Key == null)
        {
            if(y.Key == null)
                return 0;
            return -1;
        }

        if(y.Key == null)
            return 1;

        return x.Key.CompareTo(y.Key);
    }
}

list.Sort(new KvpKeyComparer<string, string>());
Run Code Online (Sandbox Code Playgroud)

如果您要使用较新版本的.NET框架,可以使用LINQ:

list = list.OrderBy(x => x.Key).ToList();
Run Code Online (Sandbox Code Playgroud)


Mik*_*ill 5

为什么不使用 SortedDictionary 呢?

这是关于它的 MSDN 文章:

http://msdn.microsoft.com/en-us/library/f7fta44c(v=vs.80).aspx