c# - 按对象属性之一的值对对象列表进行排序,其中只有一个值是感兴趣的
问题描述
我有一个大对象列表,我想根据对象的一个属性的值对其进行排序。
但是,我关心的是那些具有该属性的单个给定值的那些位于顶部 - 所有其他值,我不关心它们的顺序。例如,如果我有:
public class MyBigObject{
public string Colour;
public string ImportantProperty;
}
现在,想象一下我有这些:
var a = new MyBigObject("red", "P2")
var b = new MyBigObject("red", "P1")
var c = new MyBigObject("red", "P3")
var d = new MyBigObject("yellow", "P99")
var e = new MyBigObject("yellow", "P3")
我希望它们按颜色排序,然后按 ImportProperty 排序,其中“P3”是我感兴趣的唯一值,我希望在排序列表中排在第一位:
ListOfThoseObjects.OrderBy(c => c.Colour).ThenBy(x => x.???? where "P3" is the most important)
需要产生:
c (red / P3)
a (red / P2)
b (red / P1)
e (yellow / P3)
d (yellow / P99)
我希望能够做到这一点,而不必列出 ImportProperty 可以是的所有可能值,因为有很多值并且它们可能会超出我的控制范围。我所知道的是,P3 在排序方面是最重要的。
任何帮助都感激不尽!
解决方案
您可以只使用三元评估为 0 或 1:
ListOfThoseObjects
.OrderBy(c => c.Colour)
.ThenBy(x => x.ImportantProperty is "P3" ? 0 : 1);
推荐阅读
- python - 使用 Python 解析 JSON 嵌套字典
- vbscript - VBScript 权限被拒绝
- git - 将本地文件映射到 git 存储库中的不同名称
- python - 有没有办法重绘散景图?
- algorithm - 使用相似度评分算法重新排序字符串
- spring-boot - 为什么 Spring Data JPA 为共享的 EntityManager 调用创建新的 EntityManager?
- html - 只允许身体滚动 x 像素 css
- c++ - Scala 可变数量的参数是 F 有界类型的子类
- python - Twilio 录音调查
- directory - [exchangewebservices] 使用“0”参数调用“更新”的异常:“操作将更改对象类型,这是不允许的。”