0

您好,只需要关于 List /LINQ 等的建议

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

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

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

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

例如,我在我的网站上有 USERID 4TH IS LOGGED 的信息,那么这个函数应该返回给我

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

只是为了说明我这样做的原因 - 我在我的网站的各个地方都有一个下拉列表,我想确保如果调用这个函数来加载我的下拉列表。默认情况下,应默认选择当前登录的用户。

如果有人可以提供有价值的意见,我将不胜感激。

4

2 回答 2

1

只需使用 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();
于 2013-07-06T02:46:30.313 回答
0

您也可以尝试这个技巧:将您的登录用户插入列表的位置 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;
于 2013-07-06T03:32:41.667 回答