通过合并其他两个列表,如何创建新列表?

时间:2020-10-08 14:01:15

标签: c# list

我试图创建第三个列表,这是将两个其他列表合并后的结果,但是我不知道如何。

我还一直在努力将第一个列表(名称)中的第一个元素与第二个列表(状态)中的第一个元素组合在一起,并使它们成为第三个列表(员工)中的第一个元素。

例如,我希望员工列表中的第一个元素为“迈克尔住在俄勒冈州”。

如果有人可以帮助我,我将非常感激。谢谢。

let arr = [1, 2, 3]

function callback(n) {
  return n > 1;
}

function filter(arr, callback) {
  if (!(typeof callback === 'Function' || typeof callback === 'function')) {
    throw new TypeError("Callback is not a function");
  }
  const filteredArr = [];
  for (let z = 0; z < arr.length; z++) {
    if (callback(arr[z])) {
      filteredArr.push(arr[z]);
    }
  }
  return filteredArr;
}

console.log(filter(arr, callback));

3 个答案:

答案 0 :(得分:6)

LINQ Zip进行救援:

var result = names
    .Zip(states, (name, state) => $"{name} lives in {state}")
    .ToList();

答案 1 :(得分:2)

您可以按名称和索引从名称中提取,然后使用索引从状态中提取正确的值。

然后,将string.Format()与参数一起使用,以将{0}和{1}替换为名称和状态[index]。

这可以使用linq来完成,例如:

List<string> employees = names
  .Select((name, index) => string.Format("{0} lives in {1}", name, states[index]))
  .ToList();

答案 2 :(得分:2)

如果两个列表的长度相同,则可以遍历其中一个列表,然后将names[i]states[i]都添加到新列表中。

不使用Linq的解决方案:

if (names.Count == states.Count) {
    for (int i = 0; i < names.Count; ++i) {
        employees.Add(names[i] + " lives in " + states[i]);
    }
}