我有一个员工集合,每个员工都有一系列职责.我想输出按名称排序的员工列表,并输出他们的职责,按标题排序.
所以,它应该像这样输出:
简琼斯
工作职责:
责任A.
责任B.
迈克史密斯
工作职责:
责任A.
责任C.
要获得我使用的初始集合:
var employees = _context.Employees.OrderBy(e => e.Name);
但我似乎无法弄清楚如何订购责任子集.
我正在使用MVC,我的View收到强类型的Employee集合,因此我不想构建并返回匿名类型.
你可以这样做:
var employees = _context.Employees.OrderBy(e => e.Name);
employees.ToList().ForEach(e => e.Responsibilities = e.Responsibilities.OrderBy(r => r.Name));
第一种方法:(仅适用于职责定义为 IList 的 LINQ to Objects)
您可以复制到新的员工集合中,但这意味着您需要将每个字段重新复制到新员工中,如下所示:
var employees = from e in _context.Employees
                orderby e.Name
                select new Employee
                {
                    Name = e.Name,
                    ...re-assign other properties...
                    Responsibilities = e.Responsibilities.OrderBy(r => r.Name).ToList()
                };
第二种方法:
使用DataLoadOptions。基本上,您创建一个 DataLoadOptions 对象,它指定如何排序特定关系,因此在您的情况下:
var options = new DataLoadOptions();
options.AssociateWith<Employees>(e => e.Responsibilities.OrderBy(r => r.Name));
_context.LoadOptions = options;
var employees = _context.Employees.OrderBy(e => e.Name);
责任将自动排序。
| 归档时间: | 
 | 
| 查看次数: | 2997 次 | 
| 最近记录: |