根据订单合并两个或多个列表

我有两个列表

List Name = new List(); List Address = new List(); 

两个列表都有30个数据。 我想合并两个列表以获得完整的信息列表

 List CompleteInformation = new List(); 

此外,如果我想合并两个以上的列表,如何做到这一点。

您正在寻找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(); 

您可以使用Tuple存储信息,使用Zip方法从两个列表中获取信息,如下所示

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

但我认为最好的方法是创建一个与您的域相关的类:

 public class Person { public string Name { get; set; } public string Address { get; set; } } 

然后

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

但是,如果你有多个列表,你需要嵌套多个Zips,这并不漂亮。 如果您确定所有列表都具有相同数量的元素,则只需迭代它们。

在LINQ中:

 List multipleLists = Name.Select((t, i) => new Person { Name = t, Address = Address[i], ZipCode = ZipCode[i] }).ToList(); 

没有LINQ(严重的是,for循环没有错)

 List multipleLists = new List(); for (int i = 0; i < Name.Count; i++) { multipleLists.Add(new Person { Name = Name[i], Address = Address[i], ZipCode = ZipCode[i] }); } 

如果你想远离课程Tuple你也可以使用Tuple

还有一个类似这样的字典方法:

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

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