集合的自定义排序
本文关键字:排序 自定义 集合 | 更新日期: 2023-09-27 18:10:26
我有一个对象集合。我需要根据困难条件对它进行排序,使用许多性质和计算。我的解决方案是在对象中定义特殊的int
属性,它返回OrderBy
应该排序的值。这个解决方案不够好。
对于示例,收集应先按State
属性排序,如果是State = 1
,则按Value1
属性排序,如果是State = 2
,则按Value2
属性依次排序。
您可以通过对第一个条件使用OrderBy并在其后使用ThenBy将其他条件链接起来,从而按多个条件排序一个集合。
你的第一个标准是按国家财产简单订购。你的第二个标准取决于国家财产;假设Value1、Value2等具有相同的类型,您可以使用switch
语句来选择正确的值:
IEnumerable<MyClass> result = items
.OrderBy(item => item.State)
.ThenBy(item =>
{
switch (item.State)
{
case 1: return item.Value1;
case 2: return item.Value2;
}
throw new Exception();
});
使用LINQ的order实现比较器
你可以使用IComparer类;
只需将上面给出的所有逻辑放入其比较方法中。