我想根据3个数字条件对列表进行排序。我需要根据名为"CompletionPercentage"的属性进行排序。因此,列表应根据以下条件进行排序
- 筛选百分比应大于
0
且小于100
的列表 - 接下来过滤百分比等于
0
的列表 - 接下来过滤百分比等于
100
的列表
我尝试过下面的代码,但它不起作用。请帮忙。
var data = myCollection
.ToList()
.Where(x => getCourses.CourseLevel.Contains(x.CourseLevel)
.OrderBy(x => x.CompletionPercentage > 1 && x.CompletionPercentage < 99)
.ThenBy(x => x.CompletionPercentage == 0)
.ThenBy(x => x.CompletionPercentage == 100);
我建议将项目映射到三组中,如问题中所述:
.OrderBy(item => item.CompletionPercentage == 0 ? 2
: item.CompletionPercentage == 100 ? 3
: 1)
在这里,我们运行item
(CompletionPercentage > 0
和CompletionPercentage < 100
(作为1
st,然后不启动item
s(CompletionPercentage == 0
(,然后完成item
s(CompletionPercentage == 100
(
代码:
var data = myCollection
.Where(item => getCourses.CourseLevel.Contains(item.CourseLevel)
.OrderBy(item => item.CompletionPercentage == 0 ? 2
: item.CompletionPercentage == 100 ? 3
: 1)
.ThenBy(item => item.CompletionPercentage) // if you want order per cents as well
.ToList(); // if you want data to be List<T>