我有一组数据,其中包含如下列
OffName,RO1,RO2,RO3
为了进一步解释,我使用了如下示例数据:
OffName RO1 RO2 RO3
A John Jack Rob
B Earl John Carl
C Rob Chris Kenny
D Rodney Carl Jacob
RO 代表报告官。每个官员最多向 3 个 RO 报告。我需要制作一份报告,其中我需要按 RO 显示分组,而不管该人是 RO1 或 RO2 还是 RO3 对于该官员..John 是官员 A 的 RO1 和官员 B 的 RO2,因此,当由约翰领导下的 RO 分组时,我希望官员 A 和 B 都被选中。对于 Carl 来说,官员 B 的 RO3 和官员 D 的 RO2 所以当由 Carl 领导下的 Ro 分组时,官员 B 和 D 都被选中..
所以对于上述数据,当按 RO 分组时,我希望结果如下
RO OffName
John A
B
Jack A
Rob A
C
Earl B
Carl B
D
Chris C
Kenny C
Rodney D
Jacob D
任何帮助都会很棒
谢谢。
最佳答案
最简单的方法可能是"flatten"问题,然后按以下方式进行分组:
var query = officers.SelectMany(
x => new[] {
new { x.Name, RO = x.ReportingOfficer1 },
new { x.Name, RO = x.ReportingOfficer2 },
new { x.Name, RO = x.ReportingOfficer3 }
}
);
var grouped = query.GroupBy(y => y.RO);
foreach (var group in grouped) {
foreach (var item in group) {
Console.WriteLine(String.Format("{0}: {1}", item.RO, item.Name));
}
}
在这里,我假设 officers
是 IEnumerable<Officer>
在哪里
class Officer {
public string Name { get; set; }
public string ReportingOfficer1 { get; set; }
public string ReportingOfficer2 { get; set; }
public string ReportingOfficer3 { get; set; }
}
根据您的示例数据,这是我的输出:
John: A
John: B
Jack: A
Rob: A
Rob: C
Earl: B
Carl: B
Carl: D
Chris: C
Kenny: C
Rodney: D
Jacob: D
关于c# - 使用 C# LINQ 按任一列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153719/