拆分有序列表[复制]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

我想创建列表的排序列表。其中外“层”由场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。我会怎么做呢?

举例来说,假设shortenedRecord是30个元素的列表,但仅存在一个共有5个独特BU值。我想订购和分裂列表到他们各自的5个BU值,并将其添加到organizedRecords。

这样的:

organizedRecords [0]应该是“企业”记录列表

organizedRecords [1]应该是“研究”记录列表

其中,企业和研究是BU值。

我试图解释,尽我所能。谢谢你的任何建议。

c# list linq ienumerable
1个回答
0
投票

谢谢你的建议,我把玩了一下周围,我发现这因为我需要它的工作。

var query = shortenedRecord.GroupBy(p => p.BU).ToList();
foreach (var group in query)
{
    var ordered = group.OrderBy(x => x.JobNum);
    organizedRecords.Add(ordered);
}
© www.soinside.com 2019 - 2024. All rights reserved.