c# - 使用 LINQ 将一个列表与其他列表进行比较时如何在一个列表中设置一个值

标签 c# linq

我有两个 list :

List A                         List B

ID  FirstName  WorkingID       ID  FirstName  WorkingID
5   John       Null            5   John       1 
9   Patrick    Null            9   Patrick    2
16  Ryan       Null            16  Ryan       3

我想使用 LINQ 比较这些列表,如果两个列表中的 ID 相等,我想在第一个列表 A 列表中设置 WorkingID。
谢谢。

最佳答案

也像这样:

A.ForEach(c => c.WorkingID = B.Where(m => m.ID == c.ID).Select(s => s.WorkingID).FirstOrDefault());

完整来源:
public class Test
{
    public int ID;
    public int? WorkingID;
}
class Program
{
static void Main(string[] args)
{
    var A = new List<Test>() 
    { 
        new Test { ID = 5, WorkingID = null }, 
        new Test { ID = 9, WorkingID = null }, 
        new Test { ID = 16, WorkingID = null }, 
        new Test { ID = 18, WorkingID = null } 
    };
    var B = new List<Test>() 
    { 
        new Test { ID = 5, WorkingID = 1 }, 
        new Test { ID = 9, WorkingID = 2 }, 
        new Test { ID = 16, WorkingID = 3 } 
    };

    A.ForEach(c => c.WorkingID = B.Where(m => m.ID == c.ID).Select(s => s.WorkingID).FirstOrDefault());
}
}

关于c# - 使用 LINQ 将一个列表与其他列表进行比较时如何在一个列表中设置一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299740/

相关文章:

c# - 与 C# 中的显式类型相比,使用 var 有什么优势?

linq - 使用 linq 在 xdocument 上搜索

c# - 使用 SUM() 将 SQL 语句转换为 Linq/Entity Framework

c# - 来自给定有限列表的linq无限列表

c# - 您可以使用 LINQ 或 LAMBDA 表达式对一行中的字符串进行反向排序吗

java - 不满意链接错误 : Can't find dependent libraries

c# - 使用下拉菜单在两个页面之间切换

尽管在当前线程中设置了正确的区域设置,但 C# DateTime.ToString() 在 Linux Ubuntu 18.04 上是错误的

c# - 返回两个数中较大值的方法

c# - 多列表与单列表 Linq 查询比较