C# 将列表项组合在一起形成第三个列表(即列表1;1、2、3.列表2;a、b、c.列表3;1a、2b、3c.)

C# 将列表项组合在一起形成第三个列表(即列表1;1、2、3.列表2;a、b、c.列表3;1a、2b、3c.),c#,C#,在那里 我有两个XmlNode列表。我想将它们组合到第三个列表中,或者理想情况下直接组合到复选框列表中,其中通过索引与另一个列表的项对应的每个项都会生成一个组合这些项的输出,即list1;1, 2, 3. 清单2;a、 b,c。清单3;1a、2b、3c 不是“1,2,3,a,b,c” 我的代码使用了两个foreach循环,但输出了所有可能的组合,我知道为什么,我似乎找不到正确的代码,所以这只是我所处位置的一个示例 var lsMac = xnList.Cast<Xm

在那里

我有两个XmlNode列表。我想将它们组合到第三个列表中,或者理想情况下直接组合到复选框列表中,其中通过索引与另一个列表的项对应的每个项都会生成一个组合这些项的输出,即list1;1, 2, 3. 清单2;a、 b,c。清单3;1a、2b、3c

不是“1,2,3,a,b,c”

我的代码使用了两个foreach循环,但输出了所有可能的组合,我知道为什么,我似乎找不到正确的代码,所以这只是我所处位置的一个示例

            var lsMac = xnList.Cast<XmlNode>().Select(node => node.InnerText);
            var lsDisp = xnList1.Cast<XmlNode>().Select(node => node.InnerText);
            foreach (var m in lsMac)
            {
                foreach (var d in lsDisp)
                {
                    chkboxMAC.Items.Add(m + " " + d);
                }
            }
var lsMac=xnList.Cast().Select(node=>node.InnerText);
var lsDisp=xnList1.Cast().Select(node=>node.InnerText);
foreach(lsMac中的var m)
{
foreach(lsDisp中的变量d)
{
chkboxMAC.Items.Add(m+“”+d);
}
}
也许Join是一个很好的使用方法


谢谢

您可以使用Linq的Zip

var lsMac = xnList.Cast<XmlNode>().Select(node => node.InnerText);
var lsDisp = xnList1.Cast<XmlNode>().Select(node => node.InnerText);
var result = lsMac.Zip(lsDisp, (m, d) => m + " " + d);
foreach(var x in result) chkboxMAC.Items.Add(x);
var lsMac=xnList.Cast().Select(node=>node.InnerText);
var lsDisp=xnList1.Cast().Select(node=>node.InnerText);
var result=lsMac.Zip(lsDisp,(m,d)=>m+“”+d);
foreach(结果中的var x)chkboxMAC.Items.Add(x);

Zip将同时枚举两个可枚举项。

为此,您应该使用
LINQ.Zip

这是小提琴

类似于

  var foo= new List<int> {1, 2, 3};
    var bar= new List<string> {"a", "b", "c"};

     var result = foo.Zip(bar, (a, b) => {
        return a.ToString() + b;
    });
var foo=新列表{1,2,3};
var bar=新列表{“a”、“b”、“c”};
var result=foo.Zip(条,(a,b)=>{
返回a.ToString()+b;
});

作为
Zip()
的替代方法,在其他答案中,您可以使用
Select()

或者调用
ToList()
,使用
[]
按索引获取元素:

var lsDispList = lsDisp.ToList();
var result = lsMac.Select((item, index) => item + " " + lsDispList[index]);

对于zip解决方案,它的复杂性在(n^2)和O(n)上相当高。
var lsDispList = lsDisp.ToList();
var result = lsMac.Select((item, index) => item + " " + lsDispList[index]);