zoukankan      html  css  js  c++  java
  • Linq 动态组合排序(Lambda)

    最近有个项目需要做一个排班的功能,需要对排班的数据按不同的规则进行排序;因为排序规则是动态变化的,所以不太适合放到数据库中(临时表)中处理;
    所以考虑使用Linq的排序方式(按不同的条件判断条件组合排序方式)
     
    常用的排序方式是
       
     list.OrderBy(...).ThenBy(...);
     
    最初在网上找资料,写得比较麻烦,都是按集合中对象的属性进行排序,需要另写一些处理方法或类
     
    经测试,其实可以这样
     
    List<UserInfo> users = GetUsers();
    // 创建一个IQueryable 对象
    var q = users.AsQueryable<UserInfo>();
    // 先按年龄排序
    q = q.OrderBy(user=> user.Age);
    // 按城市
    // q = q.OrderBy(user=> user.Age); // 此时不会出现ThenBy方法的,所以需要改为
    q = ((IOrderedQueryable<UserInfo>)q).ThenBy(o => o.City);
     
    List<UserInfo> order_users = q.ToList(); // 此时就得到了按年龄以及城市排好序的列表了
     
     
  • 相关阅读:
    组合数学练习
    floyd算法新理解
    图论练习
    GDOI2021 day2总结
    P3190 [HNOI2007]神奇游乐园
    P1932 A+B A-B A*B A/B A%B Problem
    P2289 [HNOI2004]邮递员
    P5056 【模板】插头dp
    P4323 [JSOI2016]独特的树叶
    CF1153D Serval and Rooted Tree
  • 原文地址:https://www.cnblogs.com/dreamcat/p/7764927.html
Copyright © 2011-2022 走看看