C# 根据顺序合并两个或多个列表

C# 根据顺序合并两个或多个列表,c#,C#,我有两张单子 List<string> Name = new List<string>(); List<string> Address = new List<string>(); List Name=新列表(); 列表地址=新列表(); 两个列表都有30个数据。我想合并两个列表以获得完整的信息列表,如 List<string, string> CompleteInformation = new List<string, str

我有两张单子

List<string> Name = new List<string>();
List<string> Address = new List<string>();
List Name=新列表();
列表地址=新列表();
两个列表都有30个数据。我想合并两个列表以获得完整的信息列表,如

List<string, string> CompleteInformation = new List<string, string>();
List CompleteInformation=new List();

另外,如果我想将两个以上的列表合并到一个列表中,也可以这样做。

还有一种类似于以下内容的字典方法:

var people = Name.Zip(Address, (n, a) => new { n, a })
             .ToDictionary(x => x.n, x => x.a);

然后可以访问键和值。易于搜索信息。

您要查找的是
Zip
方法:

var CompleteInformation = Name.Zip(Address, (n, a) => new { Address = a, Name = n }).ToList();
提供匿名类型实例的列表,其中包含两个属性:
Address
i
Name

更新

您可以多次调用
Zip

var CompleteInformation
    = Name.Zip(Address, (n, a) => new { Address = a, Name = n })
          .Zip(AnotherList, (x, s) => new { x.Address, x.Name, Another = s })
          .ToList();
您可以使用存储信息的方法和从两个列表中获取信息的方法,如下所示

List<Tuple<string, string>> bothLists = Name.Zip(Address, (n, a) => new Tuple<string, string>(n, a)).ToList();
然后

List<Person> bothLists = Name.Zip(Address, (n, a) => new Person{Address = a, Name = n}).ToList();
List bothLists=Name.Zip(地址,(n,a)=>newperson{Address=a,Name=n}).ToList();

然而,如果你有多个列表,你需要嵌套多个拉链,这并不漂亮。如果您确定所有列表都有相同数量的元素,只需对它们进行迭代即可

在林克:

List<Person> multipleLists = Name.Select((t, i) => new Person
    {
        Name = t, Address = Address[i], ZipCode = ZipCode[i]
    }).ToList();
List multipleList=Name.选择((t,i)=>new Person
{
Name=t,Address=Address[i],ZipCode=ZipCode[i]
}).ToList();
没有LINQ(说真的,for循环没有错)

List multipleList=new List();
for(int i=0;i

如果你想远离课堂,你也可以使用元组。

你是说字典吗?哦,这太不可思议了!无需创建单独的容器。我会一直用这个谢谢你MarcinJuraszek。但是如果我有两个以上的列表,那么我应该怎么做呢。例如,假设我还有两个名为List City=new List()的列表;列表状态=新列表();我想把这些结合在一个完整的信息中lists@MarcinJuraszek:非常感谢你,玛辛。这就是我想要的。你真了不起。再次感谢。@MarcinJuraszek:我想把这段代码放在一个循环中,我想在循环之外实例化这个完整的信息,这样我就可以从一个方法返回它。我正在尝试以下方法:List CompleteInformation=new List();但它不起作用。@Pranab匿名类型不适合作为方法结果传递。你必须创建你自己的类型,你想从方法返回,并作为
Zip
调用的结果构造该类型的实例。很抱歉,我的评论太多了,但我不得不说——你的名字太棒了。
List<Person> multipleLists = Name.Select((t, i) => new Person
    {
        Name = t, Address = Address[i], ZipCode = ZipCode[i]
    }).ToList();
List<Person> multipleLists = new List<Person>();
for (int i = 0; i < Name.Count; i++)
{
    multipleLists.Add(new Person
        {
            Name = Name[i],
            Address = Address[i],
            ZipCode = ZipCode[i]
        });
}