2011-01-20 7 views
5

リストを文字列[0]の値で英数字でソートするにはどうすればよいですか?ソートリスト<String[]>

+0

@jballものすごく単純化しすぎ/擬似コードの例である:それは最初の文字ではありません。各要素は文字列の配列であり、配列の最初の要素によってソートされています。例えば、本の索引を想像してみてください。各行は 'string []'とすることができ、最初の要素は索引付けされる単語を示し、残りの要素はページ番号です。ここでは、最初の要素でソートするのが理にかなっています。 – jason

+0

私は@jballと一緒です。 –

+0

@Jason、ああ、誤解しています。私は今日私のゲームにいるよ... – jball

答えて

14

これはlistの各配列の最初の要素で辞書順にソートします

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

を試してみてください。あなたは、ルーティングを比較するカスタム文字列が必要な場合

私は正確にあなたが「アルファベット」によって何を意味するのか分からないので、あなたはこれを行う必要があります。

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])); 
+0

配列内の文字列がnullの場合、ソリューションはstring.Compare(s [0]、t [0]) –

+0

の方が、英数字の要件をどのように解決するのでしょうか?カスタムコンサルタントを使用しない場合、「50A」と「100A」ではこれが間違っていませんか? – BrokenGlass

+0

@BrokenGlass:私は彼が "英数字で"何を意味するのかわからないので、カスタム比較についての発言をしたことに注意してください。 – jason

2

テイクをこのリンクを見てくださいhere

彼らはIComparerインターフェイスの非常に良い例があります。 これを使用して、独自のComparerを作成してリストを実行することができます。

-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. 
} 
関連する問題