使用diff结构C#合并两个列表

Arn*_*nab 6 c# linq

我有一个结构对象列表

string source, string target, int count
Run Code Online (Sandbox Code Playgroud)

样本数据:

sourcea      targeta      10
sourcea      targetb      15
sourcea      targetc      20
Run Code Online (Sandbox Code Playgroud)

我的另一个对象列表是结构

string source, int addnvalueacount, int addnvaluebcount, int addnvalueccount
Run Code Online (Sandbox Code Playgroud)

样本数据:

sourcea    10    25   35
Run Code Online (Sandbox Code Playgroud)

我希望将第二个列表更改为第一个列表结构,然后使用第一个列表进行联合all(concat).

所以结果应该如下所示:

sourcea      targeta      10
sourcea      targetb      15
sourcea      targetc      20
sourcea      addnlvaluea  10
sourcea      addnlvalueb  25
sourcea      addnlvaluec  35
Run Code Online (Sandbox Code Playgroud)

所有帮助都是真诚的感谢..

谢谢

Dmi*_*nko 8

我建议ConcatSelectMany; 为你提供

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),
};
Run Code Online (Sandbox Code Playgroud)

为了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),   
      }));
Run Code Online (Sandbox Code Playgroud)