我有一个带结构的对象列表
string source, string target, int count
示例数据:
sourcea targeta 10
sourcea targetb 15
sourcea targetc 20
我的其他对象列表是结构
string source, int addnvalueacount, int addnvaluebcount, int addnvalueccount
示例数据:
sourcea 10 25 35
我希望将第二个列表更改为第一个列表结构,然后使用第一个列表进行联合all(concat)。
所以结果应该如下所示:
sourcea targeta 10
sourcea targetb 15
sourcea targetc 20
sourcea addnlvaluea 10
sourcea addnlvalueb 25
sourcea addnlvaluec 35
真诚感谢所有帮助。
由于
答案 0 :(得分:8)
我建议使用Concat
SelectMany
;为您提供
List<A> listA = new List<A> {
new A ("sorcea", "targeta" , 10),
new A ("sorcea", "targetb" , 15),
new A ("sorcea", "targetc" , 20),
};
List<B> listB = new List<B> {
new B ("sourcea", 10, 15, 35),
};
要Concat
,您只需要添加SelectMany
:
var result = listA
.Concat(listB
.SelectMany(item => new [] { // turn single B item into three A
new A(item.source, "addnvaluea", item.addnvalueacount),
new A(item.source, "addnvalueb", item.addnvaluebcount),
new A(item.source, "addnvaluec", item.addnvalueccount),
}));