c# - 拆分有序列表
问题描述
我正在尝试创建一个排序的列表列表。其中外“层”按字段 BU 排序。内层按 JobNum 排序。我有这个方法和变量。
public List<string> ListSorter<T>(IEnumerable<T> records)where T :
IMapToCSVSource, new()
List<IEnumerable<T>> organizedRecords = new List<IEnumerable<T>>();
List<T> shortenedRecord = new List<T>();
在这里,我试图创建一个更简洁的对象,它只有 3 个特定字段,而不是记录对象附带的可能的 8 个字段。BU 和 JobNum 在此方法中设置。
foreach (var record in records)
{
string businessUnit = "research"; //This would vary each loop, not constant as displayed
string JobNum = "test" //this would vary each loop, not constant as displayed
shortenedRecord.Add(new T()
{
Cost = record.Cost,
BU = businessUnit,
JobNum = jobNum
});
}
shortenedRecord.OrderBy(o => o.BU).ThenBy(n=>n.JobNum);
在这里,据我所知,现在所有记录都由 BU 缩短和排序,然后是 JobNum。
现在我想将这个有序列表拆分为 BU 特定记录的部分并将其添加到 OrganizedRecords。这样,organizedRecords 的每个元素都是一个特定的 BU。我该怎么做?
例如,shortedRecord 是一个包含 30 个元素的列表,但总共只有 5 个唯一的 BU 值。我想将列表排序并拆分为它们各自的 5 个 BU 值,并将其添加到 OrganizedRecords。
这样:
OrganizedRecords[0] 应该是“公司”记录的列表
OrganizedRecords[1] 应该是“研究”记录的列表
其中企业和研究是 BU 价值观。
我尽力解释。感谢您的任何建议。
解决方案
感谢您的建议,我玩弄了一下,我发现它可以在我需要的时候工作。
var query = shortenedRecord.GroupBy(p => p.BU).ToList();
foreach (var group in query)
{
var ordered = group.OrderBy(x => x.JobNum);
organizedRecords.Add(ordered);
}
推荐阅读
- javascript - 服务器如何将 JWT 令牌发送到浏览器
- python - numpy.str_ 转换为字节或字符串数据类型错误
- noise - 陀螺角漂移的原因
- html - 如何让 Div A 的孩子与其兄弟 Div B 重叠?
- java - Java 和 MySQL 中的 NullPointerException
- excel - 根据选择隐藏行
- python - 使用 pytest 为实例方法编写单元测试的正确方法
- php - php 在命名空间内使用所有带有“use”的类| 不是“包括”而是“使用”
' | 香草PHP - postgresql - postgresql:在列更新中分组 - 语法错误
- java - 在覆盖 toString 后在类中使用自定义打印方法已经完成