首页 文章

使用LINQ Concat List <string>中的所有字符串

提问于
浏览
458

是否有任何简单的LINQ表达式将我的整个 List<string> 集合项连接到带有分隔符的单个 string

如果集合是自定义对象而不是 string 会怎样?想象一下,我需要在 object.Name 上连接 .

9 回答

  • 106

    通过使用LINQ,这应该工作;

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

    课程描述:

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

    用法:

    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();
    
        }
    }
    

    这是我最好的:)

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

    在.NET 4.0及更高版本中:

    String.Join(delimiter, list);
    

    足够了 .

  • 443

    这是一个字符串数组:

    string.Join(delimiter, array);
    

    这是一个List <string>:

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

    这是一个自定义对象列表:

    string.Join(delimiter, list.Select(i => i.Boo).ToArray());
    
  • 2
    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));
    
  • 5

    好问题 . 我一直在用

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

    它不是LINQ,但它有效 .

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

    我认为如果你在扩展方法中定义逻辑,代码将更具可读性:

    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(", ");
    
  • 6

    你可以简单地使用:

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

    快乐的编码!

  • 1

    我用linq完成了这个:

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

相关问题