C# 基于公共变量组合2个对象列表中的值

C# 基于公共变量组合2个对象列表中的值,c#,linq,arraylist,C#,Linq,Arraylist,我有两张名单:a名单,b名单 var a1= new A { Name = "XYZ", Id = "123" }; var a2= new A { Name = "UVW", Id = "567" }; var a = new List<A>() { a1, a2 }; public class A { public string Name{ get; set;

我有两张名单:a名单,b名单

var a1= new A
{
  Name = "XYZ",
  Id = "123"
};
var a2= new A
{
  Name = "UVW",
  Id = "567"
};
var a = new List<A>()
{
    a1,
    a2
};

public class A
{
    public string Name{ get; set; }
    public string Id{ get; set; }
}


var b1= new B
{
  Location = "US",
  Id = "123"
};
var b2= new B
{
  Location = "IN",
  Id = "567"
};
var b = new List<B>()
{
    b1,
    b2
};

public class B
{
    public string Location{ get; set; }
    public string Id{ get; set; }
}
var a1=新A
{
Name=“XYZ”,
Id=“123”
};
var a2=新A
{
Name=“UVW”,
Id=“567”
};
var a=新列表()
{
a1,
a2
};
公共A类
{
公共字符串名称{get;set;}
公共字符串Id{get;set;}
}
变量b1=新的B
{
Location=“US”,
Id=“123”
};
var b2=新的B
{
Location=“IN”,
Id=“567”
};
var b=新列表()
{
b1,
b2
};
公共B级
{
公共字符串位置{get;set;}
公共字符串Id{get;set;}
}
请注意,Id在A类和B类中都是通用的。最终目标是创建一个包含a类和B类成员值的列表:

var output = new List<AB>()
{
  ab1,
  ab2
}

public class AB
{
    public string Id{ get; set; }
    public string Name { get; set; }
    public string Location { get; set; }
}
var输出=新列表()
{
ab1,
ab2
}
公共AB类
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共字符串位置{get;set;}
}
或者更新列表a以包含列表b中的值

在C#中如何实现这一点?

您可以使用它来获取基于
Id
的公共数据,并填充
AB
,如以下代码所示:

var output = aList.Join(bList,
    a => a.Id,
    b => b.Id,
    (a, b) => new AB
    {
        Id = a.Id,
        Location = b.Location,
        Name = a.Name
    }).ToList();
演示

foreach(var item in output)
{
   Console.WriteLine($"Id:{item.Id}, Name : {item.Name}, Location:{item.Location}");
}
结果

Id:123, Name : XYZ, Location:US
Id:567, Name : UVW, Location:IN
dotnetfiddle中的演示:


我希望这对您有所帮助。

如果您描述一下您的实际目标,可能会有所帮助。你这样做的目的是什么?我觉得你把一个相当简单的问题复杂化了。也许可以展示一些你想要的输入和输出示例。这是否回答了你的问题?