列表<类>字母顺序,同时将某些项目保留在顶部
本文关键字:项目 保留 顶部 顺序 列表 | 更新日期: 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 一起使用。主要排序将是外部条件。