Linq加入两个类似的对象列表?

Sui*_*eep 1 c# linq

objA = new obj()
{
    ID = 123,
    attriA = "",
    attriB = "someValueB"
}

objB = new obj()
{
    ID = 123,
    attriA = "someValueA",
    attriB = ""
}

List<obj> ListA = new List<obj>();
ListA.add(objA);

List<obj> ListB = new List<obj>();
ListB.add(objB);
Run Code Online (Sandbox Code Playgroud)

鉴于上述情况,我需要listC使用以下对象:

objC = new obj()
{
    ID = 123,
    attriA = "someValueA",
    attriB = "someBalueB"
}
Run Code Online (Sandbox Code Playgroud)

这就是我尝试过的.它工作,但我认为必须有方法缩短代码使用linQ,我不知道:

foreach(obj item in ListA)
{
    obj objB = ListB.Where(x=> x.ID == item.ID).FirstOrDefault();

    obj objC = new obj(){
        ID = objB.ID;
        attriA = item.attriA;
        attriB = objB.attriB;
    };
    ListC.add(objC);
}
Run Code Online (Sandbox Code Playgroud)

san*_*ngh 6

您可以使用linq join,如下所示

 var query = from a in ListA
                join b in ListB
                     on a.ID equals b.ID
                select new Obj()
                {
                     ID = b.ID;
                attriA = a.attriA;
             attriB = b.attriB;
                };
Run Code Online (Sandbox Code Playgroud)

以上代码未经过测试