【发布时间】: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 - stackoverflow.com/questions/54526787/… -
如果它关闭了,请不要只是重新提出您的问题。我们关闭重复项是有原因的。
标签: c# list linq ienumerable