4

List<StreetSuffix>最も使用頻度の高いものを先頭にして、アルファベット順に並べたい があります。

私のクラスは次のようになります。

public class StreetSuffix
{
    public StreetSuffix(string suffix, string abbreviation, string abbreviation2 = null)
    {
        this.Suffix = suffix;
        this.Abbreviation = abbreviation;
        this.Abbreviation2 = abbreviation2;
    }

    public string Suffix { get; set; }
    public string Abbreviation { get; set; }
    public string Abbreviation2 { get; set; }
}

次を使用してリストを注文できることを知っています。

Suffix.OrderBy(x => x.Suffix)

comboboxこのリストは、同じ順序で次の接尾辞を先頭に保持したいリストの項目からを供給するために使用されます。

Road
Street
Way
Avenue

LINQ を使用してこれを行う方法はありますか、またはこの特定のエントリに介入する必要がありますか?

4

2 に答える 2

4

あなたはこれを行うことができます:

// Note: reverse order
var fixedOrder = new[] { "Avenue", "Way", "Street", "Road" };
Suffix.OrderByDescending(x => Array.IndexOf(fixedOrder, x.Suffix))
      .ThenBy(x => x.Suffix);
于 2013-06-29T03:28:11.813 に答える
1

OrderBy.. (優先順) ThenBy.. (二次順)を使用します。

または、カスタムIComparerを実装し、それを OrderBy で使用します。一次順序付けは、外部条件になります。

于 2013-06-29T03:28:04.800 に答える