【发布时间】:2023-03-26 13:26:01
【问题描述】:
我有一个带有字符串字段的类,我想使用多个条件对其进行排序。
有问题的班级
class Items
{
public string ItemType {get; set;}
public string Code {get; set;}
// other members elided
public Items(string _IT, string _Cd)
{
ItemType = _IT;
Code = _Cd;
}
}
使用类
List<Items> lstItemCol = new List<Items>();
lstItemCol.Add(new Items("EE", "12345"));
lstItemCol.Add(new Items("WW", "5881"));
lstItemCol.Add(new Items("LLL", "215458"));
lstItemCol.Add(new Items("WW", "789"));
lstItemCol.Add(new Items("EE", "582"));
我想要做的是对列表进行排序,以便项目按 EE 排序,然后是 WW,然后是 LLL
输出顺序应该是:
"EE", "582"
"EE", "12345"
"WW", "5881"
"WW", "789"
"LLL", "215458"
我想不出一种优雅的方式来做到这一点,然后将另一个字段添加到类 (sortOrder) 并对此进行排序:我宁愿避免这种情况,只对 ItemType 进行排序?
【问题讨论】:
-
查看
List<T>.Sort()的重载。使用自定义比较。 -
您会很高兴创建一个按您想要的方式排序的新列表吗?如果是这样,LINQ 绝对是要走的路。否则,自定义比较应该不会太难......
-
您的排序顺序不清楚。特别是当 ItemType 相等时如何对项目进行排序
-
你可以试试这个:lstItemCol.Sort((x, y) => x.ItemType != y.ItemType ? x.ItemType.CompareTo(y.ItemType) : x.Code.CompareTo( y.代码));
-
应该说我使用的是 .Net 2.0 所以我不能使用 LINQ