问题描述
如题,在.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());
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册