【问题标题】:how to join 2 different list to 1 list [closed]如何将 2 个不同的列表加入 1 个列表 [关闭]
【发布时间】:2021-10-04 03:47:11
【问题描述】:

如何使用 linq 将 2 个列表加入到新列表中

public class list1
{
    public string ID { get; set; }
}

public class list2
{
    public string ID { get; set; }
    public string Member { get; set; }
}

public class result { get; set; }
{
    public string ID { get; set; }
    public List<list2> list2s { get; set; }
}

输入

list1 = {a}, {b}, {c}, {d}

list2 = {a,1}, {a,2}, {a,3}, {b,1}, {b,2}, {c,1}, {d,1}

输出

结果 = {a,{1,2,3}}, {b,{1,2}}, {c,{1}}, {d,{1}}

【问题讨论】:

  • 你为什么需要加入他们?列表 2 是列表 1 的超集,因此您可以简单地返回列表 2。(也许您的示例需要改进以更好地显示问题)。
  • 仅供参考,list 对于不是列表的东西来说是一个糟糕的名字。您的班级名为list1,但不是List。然后你也说list1 = ...,但list1 是一个类,所以它不等于任何东西,也不能被分配任何东西。你是在暗示你有一个名为list1List&lt;list1&gt; 吗?
  • 您的要求不完整。如果list1 也包含{e},但list2 中没有e,您的结果中是否需要e? “没有任何数字的e”?如果list2包含{f, {3}},但list1中没有f呢?
  • 对不起,我的问题不清楚,我只是尝试将列表加入另一个列表中,其中包含行中的数组

标签: c# arrays list linq


【解决方案1】:

您可以使用与此代码相同的连接:

var l1 = new List<list1>() 
{ 
    new list1() { ID = "a" },
    new list1() { ID = "b" }, 
    new list1() { ID = "c" },
    new list1() { ID = "d" } 
};


var l2 = new List<list2>() 
{ 
    new list2() { ID = "a" ,Member = "1" },
    new list2() { ID = "a", Member = "2" },
    new list2() { ID = "a", Member = "3" }, 
    new list2() { ID = "b", Member = "1" },
    new list2() { ID = "b", Member = "2" }, 
    new list2() { ID = "c", Member = "1" }, 
    new list2() { ID = "d", Member = "d" } 
    
};
var x = from l in l1 
        join ll in l2 on l.ID equals ll.ID 
        select new result 
        { 
            ID= ll.ID,
            list2s= l2.Where(d => d.ID == ll.ID).ToList() 
        };

但您可以使用其他解决方案

【讨论】:

  • 我尝试在加入后进行分组,但它不起作用 var x = from l in l1 join ll in l2 on l.ITEMID equals ll.ITEMID group l by l.ITEMID into g select new { ITEMID = g.ITEMID, testModel2s = l2.Where(d => d.ITEMID == ll.ITEMID).ToList() };但是在 x 之后分组得到新的选择列表它的工作 x = x.GroupBy(a => a.ITEMID).Select(a => a.FirstOrDefault()).ToList();非常感谢
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2021-12-02
  • 2015-04-10
相关资源
最近更新 更多