使用Lambda OrderBy Comparer为特定字符串值赋予权重

本文关键字:字符串 权重 Lambda OrderBy Comparer 使用 | 更新日期: 2023-09-27 18:21:32

标题可能有点令人困惑(如果是,请更改)

我有一个对象列表,例如:

public class MyObj{
  public int ID {get;set;}
  public string MyType {get;set;}
}

假设我有一个包含4个元素的List<MyObj>

每种类型都是:

myObj1.MyType = "ABC";
myObj2.MyType = "7551";
myObj3.MyType = "AAABB";
myObj3.MyType = "CDE";

如果可能的话,我想订购这份清单,这样"ABC"的重量最大,排在第一位。列表的其余部分可以按字母顺序排序。

我在.Net 4.5中,所以可以使用Comparer<>.Create()-我只是不知道如何做我需要做的事情。

使用Lambda OrderBy Comparer为特定字符串值赋予权重

我想这样的东西会起作用(并且不需要比较器)

myList.OrderByDescending(o=>o.MyType == "ABC").ThenBy(o=>o.MyType);

基本上,它根据列表是否为ABC来排序(并将它们浮到顶部),然后正常排序其余部分。

第一个OrderBy子句是Descending的原因是false先于true,所以为了将ABC浮到顶部,它需要反向排序。