在 C# 业务对象中转置数据
我有以下场景,
List<Class> Classes = new List<Class>();
Class c1 = new Class() { ClassID = 1, Name = "Class1", Abbreviation = "CLS1" }; Classes.Add(c1);
Class c2 = new Class() { ClassID = 2, Name = "Class2", Abbreviation = "CLS2" }; Classes.Add(c2);
Class c3 = new Class() { ClassID = 3, Name = "Class3", Abbreviation = "CLS3" }; Classes.Add(c3);
List<ClassCode> ClassCodes = new List<ClassCode>();
ClassCode cc1 = new ClassCode() { ClassID = 1, ClassCodeID = 1, Code = "CC1", Description = "CCD1", Class = c1 }; ClassCodes.Add(cc1);
ClassCode cc2 = new ClassCode() { ClassID = 1, ClassCodeID = 2, Code = "CC2", Description = "CCD2", Class = c1 }; ClassCodes.Add(cc2);
ClassCode cc3 = new ClassCode() { ClassID = 2, ClassCodeID = 3, Code = "CC3", Description = "CCD3", Class = c2 }; ClassCodes.Add(cc3);
ClassCode cc4 = new ClassCode() { ClassID = 2, ClassCodeID = 4, Code = "CC4", Description = "CCD4", Class = c2 }; ClassCodes.Add(cc4);
ClassCode cc5 = new ClassCode() { ClassID = 3, ClassCodeID = 5, Code = "CC5", Description = "CCD5", Class = c3 }; ClassCodes.Add(cc5);
ClassCode cc6 = new ClassCode() { ClassID = 3, ClassCodeID = 6, Code = "CC6", Description = "CCD6", Class = c3 }; ClassCodes.Add(cc6);
我尝试使用 Linq 将上述数据转置为以下格式
Class1 | CLS1 | Class2 | CLS2 | Class3 | CLS3 - Columns
---------------------------------------------------------------------------
CCD1CCD2 | CC1CC2 | CCD3CCD4 | CC3CC4 | CCD5CCD6 | CC4CC5 - Row
- 列标题是基于 ClassID (ClassCode) 分组的名称(类)和缩写(类)的值
- 值是代码的串联(ClassCode) 和描述 (ClassCode) - 映射是代码转到缩写列,描述转到名称列
当您想要在运行时创建属性时,数据表适合 - 任何其他选项都可以赞赏。
请帮忙!!
I have the below scenario
List<Class> Classes = new List<Class>();
Class c1 = new Class() { ClassID = 1, Name = "Class1", Abbreviation = "CLS1" }; Classes.Add(c1);
Class c2 = new Class() { ClassID = 2, Name = "Class2", Abbreviation = "CLS2" }; Classes.Add(c2);
Class c3 = new Class() { ClassID = 3, Name = "Class3", Abbreviation = "CLS3" }; Classes.Add(c3);
List<ClassCode> ClassCodes = new List<ClassCode>();
ClassCode cc1 = new ClassCode() { ClassID = 1, ClassCodeID = 1, Code = "CC1", Description = "CCD1", Class = c1 }; ClassCodes.Add(cc1);
ClassCode cc2 = new ClassCode() { ClassID = 1, ClassCodeID = 2, Code = "CC2", Description = "CCD2", Class = c1 }; ClassCodes.Add(cc2);
ClassCode cc3 = new ClassCode() { ClassID = 2, ClassCodeID = 3, Code = "CC3", Description = "CCD3", Class = c2 }; ClassCodes.Add(cc3);
ClassCode cc4 = new ClassCode() { ClassID = 2, ClassCodeID = 4, Code = "CC4", Description = "CCD4", Class = c2 }; ClassCodes.Add(cc4);
ClassCode cc5 = new ClassCode() { ClassID = 3, ClassCodeID = 5, Code = "CC5", Description = "CCD5", Class = c3 }; ClassCodes.Add(cc5);
ClassCode cc6 = new ClassCode() { ClassID = 3, ClassCodeID = 6, Code = "CC6", Description = "CCD6", Class = c3 }; ClassCodes.Add(cc6);
I am trying to use Linq to transpose the above data in the below format
Class1 | CLS1 | Class2 | CLS2 | Class3 | CLS3 - Columns
---------------------------------------------------------------------------
CCD1CCD2 | CC1CC2 | CCD3CCD4 | CC3CC4 | CCD5CCD6 | CC4CC5 - Row
- Columns headers are values of Name (Class) and Abbreviation (Class) on the basis of group by on ClassID (ClassCode)
- Value is concatination of Code (ClassCode) and Description (ClassCode) - Map is Code goes to Abbreviation Column and Description goes to Name Column
DataTable is a fit when you want to create properties at runtime - any other option will be appreciated.
Please help!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有解释为什么要这样做。
可能还有其他方法可以实现您想要的目标。
无论如何,下面的代码应该可以工作。
它生成一个 DataTable,我认为它非常适合此目的:
You are not explaining why you are doing this.
There might be other ways of achieving what you want.
Anyway, the following code should work.
It produces a DataTable, which I think is a good fit for this: