我有一个收集形式的平面数据如下:
historyId documentId statusId
612 2 1
612 3 2
612 4 5
612 2 4
当上述数据填充到myClassFlat的集合中时,它将在集合中有四个成员
class myClassFlat{
public int historyId {get; set;}
public int documentId { get; set;}
public int statusId {get; set;}
}
我想将heirarchical数据转换为另一个集合,如下所示,以便documentId中的重复值被分组,并且statusId被加载到类中的数组中:
historyId documentId statusId
612 2 1, 4
612 3 2
612 4 5
因此,当数据填充到以下myClassHierarchical的集合中时,它将只有三个成员,因为statusId,1和4的两个值将填充到类<{1}} statusId中/ p>
int[]
我尝试首先使用Linq通过documentId查找集合的唯一成员,然后循环遍历非唯一成员并创建类的列表并使用statusId填充int [],但无法使其工作。
答案 0 :(得分:1)
看起来你只想按两个字段分组:
var list = new List<myClassFlat>
{
new myClassFlat() { historyId = 612, documentId = 2, statusId = 1},
new myClassFlat() { historyId = 612, documentId = 3, statusId = 2},
new myClassFlat() { historyId = 612, documentId = 4, statusId = 5},
new myClassFlat() { historyId = 612, documentId = 2, statusId = 4},
};
var result = list.GroupBy(x => new { x.historyId, x.documentId })
.Select(g => new myClassHierarchical()
{
historyId = g.Key.historyId,
documentId = g.Key.documentId,
statusId = g.Select(x => x.statusId).ToArray()
});