列表<类>字母顺序,同时将某些项目保留在顶部

本文关键字:项目 保留 顶部 顺序 列表 | 更新日期: 2023-09-27 18:20:17

我有一个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 执行此操作,或者我必须为此特定条目进行干预?

列表<类>字母顺序,同时将某些项目保留在顶部

你可以

这样做:

// Note: reverse order
var fixedOrder = new[] { "Avenue", "Way", "Street", "Road" };
Suffix.OrderByDescending(x => Array.IndexOf(fixedOrder, x.Suffix))
      .ThenBy(x => x.Suffix);

使用 OrderBy..(优先顺序(然后通过..(次序(

或者,实现自定义 IComparer 并将其与 OrderBy 一起使用。主要排序将是外部条件。