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

.NET 作者: Rector 256阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

如题,在.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#程序开发中将一个字符串集合List<string>连接成一个字符串?

发布于: 2018-02-09 15:26:07
分享扩散:

文章评论

获取验证码