Lambda或LINQ按Shift排序列表<Employee>,C#

jp2*_*ode 2 c# linq lambda

我有一个需要过滤的员工列表,我想看看如何使用lambda和/或LINQ表达式来完成此操作.

我想返回列表中的所有Employees,但我希望它们按Shift,Lastname和Firstname的顺序返回.

List<Employee> empList = GetEmployeesInOtherCode();
// ...
int MAX_SHIFT = 5;
List<string> sortedNames = new List<string>(empList.Count);
for (int i = 0; i < MAX_SHIFT; i++) {
  List<string> localShift = new List<string>();
  for (int j = 0; j < empList.Count; j++) {
    Employee e = empList[j];
    if (e.Shift == i) {
      localShift.Add(string.Format("{0}, {1}", e.Lastname, e.Firstname));
    }
  }
  localShift.Sort();
  sortedNames.AddRange(localShift.ToArray());
}
foreach (string line in sortedNames) {
  Console.WriteLine(line);
}
Run Code Online (Sandbox Code Playgroud)

编辑: Jeez,你们快!你用什么来产生这些东西?您是否正在编写它,或者是否有帮助的工具?

Bal*_*a R 7

var sortedNames = empList.Where(e => e.Shift >= 0 && e.Shift < MAX_SHIFT)
                         .OrderBy(e => e.Shift)
                         .ThenBy(e => e.LastName)
                         .ThenBy(e => e.FirstName)
                         .Select(e => string.Format("{0}, {1}", e.Lastname, e.Firstname))
                         .ToList();
Run Code Online (Sandbox Code Playgroud)