使用LINQ根据多个数字条件对列表进行排序



我想根据3个数字条件对列表进行排序。我需要根据名为"CompletionPercentage"的属性进行排序。因此,列表应根据以下条件进行排序

  1. 筛选百分比应大于0且小于100的列表
  2. 接下来过滤百分比等于0的列表
  3. 接下来过滤百分比等于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 > 0CompletionPercentage < 100(作为1st,然后不启动items(CompletionPercentage == 0(,然后完成items(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>

最新更新