Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

363
Views
Combinando contenidos de 2 listas en C#

Acabo de empezar a aprender C#. Quiero combinar 2 listas y devolver la salida. Por ejemplo:

Lista 1 = Pedro, Tony, Steve
Lista 2 = Parker, Stark, Rogers

Lista final/Salida:
Peter Parker
tony stark
steve rogers

Aquí están mis códigos:

 using System; using System.Collections.Generic; using System.Linq; namespace HelloWorld { class Program { static void Main(string[] args) { var projectTeam = "Group Avengers"; Console.WriteLine("Avengers Assemble"); string[] firstNames = {"Peter", "Tony", "Steve"}; string[] lastNames = {"Parker", "Stark", "Rogers"}; IList<string> combinedNames = new List<string>(); foreach (string firstName in firstNames) { foreach (string lastName in lastNames) { Console.WriteLine(firstName + lastName); } } } } }

Salida real:

 Avengers Assemble PeterParker PeterStark PeterRogers TonyParker TonyStark TonyRogers SteveParker SteveStark SteveRogers

Rendimiento esperado:

 Avengers Assemble Peter Parker Tony Stark Steve Rogers
over 4 years ago · Santiago Trujillo
6 answers
Answer question

0

En su código, solo necesita un ciclo y debe ser for , no foreach

 for (var i = 0; i< firstNames.Length; i++) { string firstName = firstNames[i]; string lastName = lastNames[i]; Console.WriteLine(firstName + lastName); }

También puede reemplazar esto con IEnumerable.Zip ( https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.zip?view=net-6.0 )

 firstNames .Zip(lastNames, (first, last) => first + last) .ToList() .ForEach(x=>Console.WriteLine(x));

Tenga en cuenta que ambos enfoques asumen que tanto firstNames como lastNames tienen la misma cantidad de elementos.

over 4 years ago · Santiago Trujillo Report

0

Esto se puede hacer con LINQ Zip() :

 var fullNames = firstNames.Zip(lastNames, (first, last) => $"{first} {last}")

Zip toma las dos listas y las revisa simultáneamente, aplicando la función a cada par.

over 4 years ago · Santiago Trujillo Report

0

Puede usar un bucle for y acceder a las listas a través del índice:

 for(int i = 0; i < Math.Min(firstNames.Length, lastNames.Length); i++) { Console.WriteLine(firstNames[i] + lastNames[i]); }

mejor sería almacenar las dos informaciones relacionadas en una clase común, por ejemplo Avenger con propiedades FirstName y LastName .

Otra forma de vincular dos listas relacionadas es Zip de LINQ:

 var zippedAvengers = firstNames.Zip(lastNames, (f,l) => f + " " + l); foreach(string name in zippedAvengers) Console.WriteLine(name);
over 4 years ago · Santiago Trujillo Report

0

Si alteras el bucle:

 for (int i=0; i < firstNames.Count; i++) { Console.WriteLine(firstNames[i] + " " + lastNames[i]); }

Funcionará.

Como nota al margen: en las versiones más nuevas de .NET, puede simplificar la concatenación con $"{firstNames[i]} {lastNames[i]}"

Además, la solución .Zip (propuesta por Serg):

 firstNames .Zip(lastNames, (first, last) => first + " " + last) .ToList() .ForEach(x=>Console.WriteLine(x));

seria mas eficiente

over 4 years ago · Santiago Trujillo Report

0

Lo que estás haciendo es emparejar cada elemento de la primera lista con cada elemento de la segunda lista. Pero lo que quieres hacer, si te entiendo bien, es hacer coincidir el primer elemento de la primera lista con el primer elemento de la segunda lista.

Para hacer eso, no te daré el código para que puedas aprender, pero puedo mostrarte a dónde ir:

  1. Asegúrese de que sus listas tengan el mismo tamaño , de lo contrario obtendrá una excepción al intentar acceder a un índice inexistente
  2. Use for loop en lugar de foreach , son menos intuitivos pero más útiles en esta situación. Para cada índice de las dos listas, haga que el mismo índice de la tercera lista (el resultado) corresponda a la concatenación de los dos, por ejemplo:
 result[0] = firstList[0] + secondList[0];

(Para tener un espacio entre los dos, debe agregar un espacio entre el primer y el segundo elemento de la lista)

over 4 years ago · Santiago Trujillo Report

0

Está ejecutando dos bucles for sin ningún motivo. Simplemente ejecute un solo ciclo de i = 0 a i = 3 (no incluido). Luego puede elegir el i-ésimo elemento de ambas listas. Ejemplo. for i = 0, firstNames[0] = "Peter" lastNames[0] = "Parker" Puede imprimir

Console.WriteLine(firstNames[i] + " " + lastNames[i]);

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!