拆分有序列表[重复]
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 => 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=>x.JobNum).GroupBy(x=>x.BU).ToList();
以上是关于拆分有序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章