繁体   English   中英

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

[英]Using Lambda OrderBy Comparer to give weight to a specific string value

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

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

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() - 我根本不知道如何做我需要做的事情。

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

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

基本上,它按照是否为ABC来对列表进行排序(并将它们浮动到顶部),然后正常排序。

第一个OrderBy子句是Descending的原因是false出现在true之前,因此为了将ABC浮动到顶部,它需要反向排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM