重新排列列表中的元素

本文关键字:列表 元素 排列 新排列 | 更新日期: 2023-09-27 18:21:09

嗨,关于List/LINQ等的刚需建议

public  static List<Employee> Employees()
       {
          return Adapters.WebServiceAdapter.getInstance.SELECT_EMPLOYEES().ToList();
       }

这将返回USERID、USERNAME,按USERID的ASC顺序如下

   USERID USERNAME
        1      FirstUser
        2      SecondUser
        3      ThirdUser
        4      FourthUser
        5      FifthUser

我需要根据当前登录的员工重新安排输出。

例如,我有信息,用户ID 4TH是登录在我的网站,然后这个功能应该把还给我

 USERID USERNAME
    4     FourthUser
    1     FirstUser
    2     SECONDUSER
    3     THIRDUSER
    5     FIFTHUSER

只是为了说明我为什么这么做——我的网站上有一个下拉列表,我想确保如果调用这个函数来加载我的下拉列表。默认情况下,应默认选择当前登录的用户。

如果有人能提供宝贵的意见,我将不胜感激。。

重新排列列表中的元素

只需使用Union 组合两个列表

链接代码:

    var numbers = new List<Int32>{1,2,3,4,5};
    var loggedInUsers = numbers.Where(x=>x == 4);
    var restOfUsers = numbers.Where(x=>x != 4);
    var joinedLists = loggedInUsers.Union(restOfUsers).ToList();

您也可以试试这个技巧:将您的登录用户插入列表的位置0,然后调用distinct。

MyList.Insert(0,MyList.Single(c => c.UserID == IDofLoggedUser));
var lst = MyList.Distinct();

结果:

the original list ordered by ID like you have
MyList = 1,2,3,4,5,6;
then insert for example logged user has ID of 4
MyList = 4,1,2,3,4,5,6;
then call distinct,it will find and maintain the first 4,and remove second 4, so final result:
MyList = 4,1,2,3,5,6;