这个问题已经在这里有一个答案:
我想创建列表的排序列表。其中外“层”由场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值。
我试图解释,尽我所能。谢谢你的任何建议。
谢谢你的建议,我把玩了一下周围,我发现这因为我需要它的工作。
var query = shortenedRecord.GroupBy(p => p.BU).ToList();
foreach (var group in query)
{
var ordered = group.OrderBy(x => x.JobNum);
organizedRecords.Add(ordered);
}