with strings example concatenar array c# linq .net-3.5

c# - strings - Concat todas las cadenas dentro de una Lista<string> usando LINQ



string.join c# (9)

¿Hay alguna expresión LINQ fácil para concatenar mis elementos de colección de la List<string> en una sola string con un carácter delimitador?

¿Qué pasa si la colección es de objetos personalizados en lugar de string ? Imagina que necesito concatenar en object.Name .


Al usar LINQ, esto debería funcionar;

string delimiter = ","; List<string> items = new List<string>() { "foo", "boo", "john", "doe" }; Console.WriteLine(items.Aggregate((i, j) => i + delimiter + j));

descripción de la clase:

public class Foo { public string Boo { get; set; } }

Uso:

class Program { static void Main(string[] args) { string delimiter = ","; List<Foo> items = new List<Foo>() { new Foo { Boo = "ABC" }, new Foo { Boo = "DEF" }, new Foo { Boo = "GHI" }, new Foo { Boo = "JKL" } }; Console.WriteLine(items.Aggregate((i, j) => new Foo{Boo = (i.Boo + delimiter + j.Boo)}).Boo); Console.ReadKey(); } }

Y aquí está mi mejor :)

items.Select(i => i.Boo).Aggregate((i, j) => i + delimiter + j)


Buena pregunta. He estado usando

List<string> myStrings = new List<string>{ "ours", "mine", "yours"}; string joinedString = string.Join(", ", myStrings.ToArray());

No es LINQ, pero funciona.


Creo que si define la lógica en un método de extensión, el código será mucho más legible:

public static class EnumerableExtensions { public static string Join<T>(this IEnumerable<T> self, string separator) { return String.Join(separator, self.Select(e => e.ToString()).ToArray()); } } public class Person { public string FirstName { get; set; } public string LastName { get; set; } public override string ToString() { return string.Format("{0} {1}", FirstName, LastName); } } // ... List<Person> people = new List<Person>(); // ... string fullNames = people.Join(", "); string lastNames = people.Select(p => p.LastName).Join(", ");


En .NET 4.0 y versiones posteriores:

String.Join(delimiter, list);

es suficiente.


Esto es para una matriz de cadena:

string.Join(delimiter, array);

Esto es para una lista <string>:

string.Join(delimiter, list.ToArray());

Y esto es para una lista de objetos personalizados:

string.Join(delimiter, list.Select(i => i.Boo).ToArray());


Lo he hecho usando linq:

var oCSP = (from P in db.Products select new { P.ProductName }); string joinedString = string.Join(",", oCSP.Select(p => p.ProductName));


Puede utilizar simplemente:

List<string> items = new List<string>() { "foo", "boo", "john", "doe" }; Console.WriteLine(string.Join(",", items));

¡Feliz codificación!


List<string> strings = new List<string>() { "ABC", "DEF", "GHI" }; string s = strings.Aggregate((a, b) => a + '','' + b);


using System.Linq; public class Person { string FirstName { get; set; } string LastName { get; set; } } List<Person> persons = new List<Person>(); string listOfPersons = string.Join(",", persons.Select(p => p.FirstName));