首页 / .NET / 正文

[C#].NET/C#程序开发中将一个字符串集合List<string>连接成一个字符串?

5677 发布于: 2018-02-09 读完约需5分钟

问题描述

如题,在.NET/C#程序开发中,是否有简便的LINQ表达式实现将一个字符串集合List<string>连接成一个按指定分隔符分隔的字符串?

再者,如果这个集合不是字符串集合List<string>,而一个泛型集合List<T>,需要连接泛型集合List<T>中的某一个属性值,在.NET/C#程序中,又该如果实现呢?

方案一

可以使用Lambda表达式一实现将一个字符串集合List<string>连接成单个字符串,如下:

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

如题集合是一个泛型集合List<T>,比如这里的泛型T对应的实体类为Foo:
Foo.cs

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

    }
}

其中连接泛型集合List<T>的某个属性值的方法:

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

方案一

在.NET 4.0 以及以上版本,可以使用string.Join(...)方法,如:

string.Join(delimiter, list);

如果是.NET 4.0以前的版本,可以使用如下的方式:

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

方案三

如果是一个对象集合List<T>,则:

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

方案四

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [C#].NET/C#程序开发中如何获取实现了某个接口的所有类型列表?

下一篇: [C#].NET/C#程序开发中C#的数据类型与SQL Server数据库的数据类型一一对应关系是怎么样的?

本文永久链接码友网 » [C#].NET/C#程序开发中将一个字符串集合List<string>连接成一个字符串?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册