从2个信息列表创建用户列表

时间:2018-04-04 09:21:20

标签: c#

我有2个List个包含用户信息。第一个列表包含用户name,第二个列表包含他的age。我需要创建List类型UserUser类型nameage)。

最好的方法是什么?

如果我有超过2个列表怎么办?

2 个答案:

答案 0 :(得分:2)

如果列表索引对应同一用户,请同时尝试Zip列表:

  List<string> names = new List<string>() {
    "John", "Jack", "Me",
  };

  List<int> ages = new List<int>() {
    20, 30, 43,
  };

  // {"John", 20}
  // {"Jack", 30}
  // {"Me", 43}
  List<User> users = names
    .Zip(ages, (name, age) => new User(name, age))
    .ToList();

修改:如果您有多个列表,我建议您切换到Enumerable.Range

  List<name> names = ...
  List<int> ages = ...
  List<Sex> sexes = ...
  ...

  List<User> users = Enumerable
    .Range(0, new int[] {names.Count, ages.Count, sexes.Count}.Min()) 
    .Select(i => new User(names[i], ages[i], sexes[i]))
    .ToList();

答案 1 :(得分:1)

您可以在C#中创建keyValuePair列表,如下所示 -

List<KeyValuePair<string, int>> list3 = new List<KeyValuePair<string, int>>();
        for(int i = 0; i<list1.Count; i++)
        {               
            list3.Add(new KeyValuePair<string, int>(list1[i], list2[i]));         
        }