首页 > 解决方案 > 使用c#根据键加入两个arrayList

问题描述

我在这里有两个arrayList:

List<ArrayList1> data = new List<ArrayList1>() {
    { id = 1, name = "John Doe", age = 20 },
    { id = 2, name = "Mae Doe", age = 17 },
    { id = 3, name = "Mark Smith", age = 35 },
    { id = 4, name = "Selena Smith", age = 15 },
    { id = 5, name = "Shane Doe", age = 26 },
    { id = 6, name = "Will Smith", age = 45 }
};
List<ArrayList2> data = new List<ArrayList2>() {
    { id = 1, address = "Singapore", phone_number = "123", store_name = "ABC" },
    { id = 4, address = "Japan", phone_number = "456", store_name = "DEF" },
    { id = 5, address = "Korea", phone_number = "789", store_name = "GHI" }
};

我想加入他们,有点左加入mysql所以结果会是这样的

List<ArrayListResult> data = new List<ArrayListResult>() {
    { id = 1, name = "John Doe", age = 20, address = "Singapore", phone_number = "123", store_name = "ABC" },
    { id = 2, name = "Mae Doe", age = 17 },
    { id = 3, name = "Mark Smith", age = 35 },
    { id = 4, name = "Selena Smith", age = 15, address = "Japan", phone_number = "456", store_name = "DEF" },
    { id = 5, name = "Shane Doe", age = 26, address = "Korea", phone_number = "789", store_name = "GHI" },
    { id = 6, name = "Will Smith", age = 45 }
};

address、phone_number、store_name 将根据匹配的 id 合并到 List 中。

有没有简单的方法可以根据匹配的id在c#中合并2个arrayList?请帮忙。谢谢!

标签: c#unity3d

解决方案


你正在寻找这个:

result =
(
    from d1 in data1
    join d2 in data2 on d1.id equals d2.id into gds
    from gd in gds.DefaultIfEmpty()
    select new ArrayListResult()
    {
        id = d1.id,
        name = d1.name,
        age = d1.age,
        address = gd?.address,
        phone_number = gd?.phone_number,
        store_name = gd?.store_name,
    }
).ToList();

这给了我:

结果


推荐阅读