拆分有序列表[重复]

Posted

技术标签:

【中文标题】拆分有序列表[重复]【英文标题】:Splitting an ordered list [duplicate] 【发布时间】:2019-06-28 20:14:18 【问题描述】:

我正在尝试创建列表的排序列表。其中外“层”按字段 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 的价值观。

我尽力解释。感谢您的任何建议。

【问题讨论】:

.GroupBy(o =&gt; o.BU).ToList()? 是的,对我来说听起来很 GroupBy'ish。您对术语的使用也令人困惑。我的意思是你没有解析任何东西 你能不能把你的输入数据和输出数据作为例子 @MichaelRandall 出于某种原因 .GroupBy 不适用于 OP - ***.com/questions/54526787/… 如果它关闭了,请不要只是重新提出您的问题。我们关闭重复项是有原因的。 【参考方案1】:

感谢您的建议,我玩弄了一下,发现它可以在我需要的时候工作。

var query = shortenedRecord.GroupBy(p => p.BU).ToList();
foreach (var group in query)

    var ordered = group.OrderBy(x => x.JobNum);
    organizedRecords.Add(ordered);

【讨论】:

你可以在一个声明中做到这一点 你可以这样试试吗:var query = shortenedRecord.OrderBy(x=&gt;x.JobNum).GroupBy(x=&gt;x.BU).ToList();

以上是关于拆分有序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将有序元组列表保存为 CSV [重复]

在PHP中将HTML有序/无序列表转换为纯文本[重复]

分别从多个有序列表中删除重复项

连个有序列表合并

Python数据结构与算法---维护有序列表bisect

Python数据结构与算法---维护有序列表bisect