c# - Lambda 或 LINQ 按 Shift 对列表 <Employee> 进行排序,C#

标签 c# linq lambda

我有一个需要过滤的员工列表,我想看看如何使用 lambda 和/或 LINQ 表达式来做到这一点。

我想返回列表中的所有员工,但我希望它们按类次、姓氏和名字的顺序返回。

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);
}

编辑:天哪,你们真快!你用什么来生成这些东西?您是手动编码,还是有可用的工具?

最佳答案

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();

关于c# - Lambda 或 LINQ 按 Shift 对列表 <Employee> 进行排序,C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206649/

相关文章:

c# - .net 4.5 正确的Windows服务启动方式

c# - 使用 Azure Functions 和 .NET 5 将不同的连接字符串传递到 IDesignTimeDbContextFactory(独立)

c# - 在 DropDownFor 值更改时更改 EditorFor 的值

c# - 优化 LINQ 将多个列表组合成新的通用列表

c# - 如何使用 lambda 表达式过滤 C# 中的列表?

c# - 没有用于 ASP.NET MVC 的 DI 容器的 Controller 的构造函数参数

Linq 由多列区分并选择最新行

c++ - Qt connect 无法识别 lambda 表达式

c++ - lambda函数与gsl的数值积分

C# |从带有值的静态类字段创建一个 json 字符串