c# - Linq加入两个相似的对象列表?

标签 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);

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

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

这是我试过的。它有效,但我认为必须有一些方法可以通过使用我不知道的 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);
}

最佳答案

你可以像下面这样使用 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;
                };

以上代码未经测试

关于c# - Linq加入两个相似的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476422/

相关文章:

c# - 在 AutoCAD 中以一定角度插入 block (C#)

c# - 选择异步函数的更好方法?

c# - Datagrid 绑定(bind) (WPF) 导致 UI 延迟

linq - 乌鸦数据库 4 : Check if a string of an array of strings exists in different array of strings

c# - 使用 Linq To SQL 进行简单搜索

c# - IEnumerable<Func<T,S>> 和 LINQ 类型推断

c# - 如何首先循环遍历 Entity Framework 4.1 代码中的子对象列表

LINQ to SQL 延迟执行和实现

c# - 字符串数组到字符串转换所需的 Linq 语法

c# - 将日期范围拆分为几个特定的​​日期范围 block