2011-01-20 70 views
5

如何对字符串[0]中的值按字母顺序排序列表?排序列表<String[]>

+0

@jball:这不是第一个字符。每个元素都是一个字符串数组,他按这些数组的第一个元素进行排序。想象一下,例如,一本书的索引。每行可以是一个`string []`,其中第一个元素表示被索引的单词,其余元素是页码。这里按照第一个元素排序是有意义的。 – jason 2011-01-20 19:58:51

+0

我与@jball。 – 2011-01-20 20:00:24

回答

14

尝试

list.Sort((s, t) => String.Compare(s[0], t[0])); 

这将排序按字典顺序由每个阵列的在list第一个元素。

因为我不正是你的“字母数字”的意思知道,如果你需要比较路由自定义字符串,你应该这样做:

class MyStringComparer : IComparer<string> { 
    public int Compare(string s, string t) { 
     // details elided 
    } 
} 

然后

var comparer = new MyStringComparer(); 
list.Sort((s, t) => comparer.Compare(s[0], t[0])); 
2

起飞看看这个链接here

他们有一个非常好的IComparer接口的例子。 你可以使用它创建你自己的比较器并通过它运行你的列表。

-1

这是一个可怕的过于简单/伪代码示例...真的拉伸这里...

MyclassZeroIndexComparer : IComparable, IList(Of String[]) 
{ 
    private List<String[]> listOfStringArrays; 

    //expose this as a public member somewhere... 
    private List<String[]> listofStringArrayZeroIndex; 

    //internally store a list of only the first item you want to index.... 
    //implement your own, add,remove,clear 

    void Add(foo item) 
    { 
    listofStringArrays.Add(Item); 
    listofStringArrayZeroIndex.add(item[0]); 
    } 

    // continue implementing other methods in the same manner. 
}