我有2个List
个包含用户信息。第一个列表包含用户name
,第二个列表包含他的age
。我需要创建List
类型User
(User
类型name
和age
)。
最好的方法是什么?
如果我有超过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]));
}