【发布时间】:2019-05-09 10:42:19
【问题描述】:
我是 linq 的新手,并试图将这个列表合并出来。我正在尝试合并 2 个父/子数据列表,如下所示:
{
"ParentsList1":
[
{
"Name": "Parent 1",
"Children": [
{
"Name": "Child 1",
},
{
"Name": "Child 2",
}
],
},
{
"Name": "Parent 2",
"Children": [
{
"Name": "Child 1",
}
],
}
]
}
{
"ParentsList2":
[
{
"Name": "Parent 1",
"Children": [
{
"Name": "Child 1",
},
{
"Name": "Child 2",
},
{
"Name": "Child 3",
}
],
},
{
"Name": "Parent 2",
"Children": [
{
"Name": "Child 2",
}
],
}
]
}
---------------合并输出----
{
"MergedParentsList":
[
{
"Name": "Parent 1",
"Children": [
{
"Name": "Child 1",
},
{
"Name": "Child 2",
},
{
"Name": "Child 3",
}
],
},
{
"Name": "Parent 2",
"Children": [
{
"Name": "Child 2",
}
],
}
]
}
我希望合并以删除/替换子实体。到目前为止,我一直坚持与工会合作
List<ParentListModel> mergedParentLists = ParentsList1
.Union(ParentsList2)
.GroupBy(grp => new {grp.Name})
.Select(sel => sel.FirstOrDefault())
.ToList();
这似乎使父列表正常,但似乎无法同步子数据...
【问题讨论】:
-
您是否试图获得
Children集合的联合?或者你想remove/replaceChildren在工会中? -
您的输出与第二个列表相同,因此将其与第一个列表合并不会产生任何差异并不明显。
-
如果您删除所有内容并将其替换为第二个列表,为什么不将其分配给第二个列表?上面似乎没有发生任何“合并”...
MergedParentsList == ParentsList2(也许您只需要更好的样本数据)。 -
对不起,我的问题很糟糕......哈哈。我需要保留第一个列表中的父实体,从第二个列表中添加任何新的父实体,然后合并子实体,以便 parentlist2 获胜……这有意义吗?
-
听起来你认为如果一个人有相同的名字,他们是相同的,所以如果你加入两个列表,那么同名的父母应该被“合并”成一个人,并且在这个过程中,他们的孩子列表应该以相同的方式合并(如果他们都有一个名为“孩子1”的孩子,那么合并后将只有一个“孩子1”)。