文字列とアルファベット順の並べ替えられたリストを返すComparerを書きたいと思います。 これは私のリストである:ここでComparerを文字列で含む特定の並べ替えとアルファベット順の並べ替え
AA
AA MN
ADIDAS
ADIDAS MEN
2KC
ISANA MEN
は私の比較演算子です:
public class MyComparer : IComparer<string>
{
int IComparer<string>.Compare(string x, string y)
{
if (x == y)
{
return 0;
}
if (x.Contains(y))
{
return -1;
}
else
{
return 1;
}
}
}
そして、この比較子そのようなソート私のリスト:
2KC
ADIDAS MEN
AA MEN
AA
ISANA MEN
ADIDAS
私は最初のチェックは、「最長たいので、それは正しいです"ブランド(製品でブランドを見つけることでエラーを取り除く)が、このソートではアルファベット順にソートしたい。だから私のリストは次のようになります
2KC
ADIDAS MEN
AA MEN
AA
ADIDAS
ISANA MEN
私はstring.Sort()で試行していますが正しく動作しません。
あなたのコンペラーは、完全に予期しないチェックがあります。x.Contains(y)。それはどういう意味ですか、なぜあなたはそれをこのように必要としますか? – eocron
それは私のリストの一部です。私はOrderByを使い、パラメータの一つにComparerが必要です。 'MEN'のようなオプションのsufixで最初のブランドをチェックしたいので、このようにする必要があります。他にも「ベルベット」と「ブルジョワ」があります。この比較器では、結果配列には最初に「ベルベット」、次に「ブルジョワス」があります。それは間違っています。 – Sidron
"ADIDAS MEN"を "ADIDAS"の前にソートする理由を理解していますが、なぜ "AA"と "AA MEN"の前にソートするのか分かりません。まさにあなたの選別ルールは何ですか? –