簡體   English   中英

使用linq收集到字符串

[英]Collection to string using linq

我上課了

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }   
}

List<Person> PersonList = new List<Perso>();
PersonList.Add(new Person() { FirstName = "aa", LastName = "AA" } );
PersonList.Add(new Person() { FirstName = "bb", LastName = "BB" } );

我想使用Linq為LastName獲取一個帶逗號分隔符的字符串,結果如下:AA,BB

謝謝,

如果您使用的是.NET 4:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName));

如果您使用的是.NET 3.5:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)
                                              .ToArray());

(基本上.NET 4在string.Join添加了一些額外的重載。)

您可以使用

PersonList.Select(p => p.LastName).Aggregate((s1,s2) => s1 + ", " + s2);

要使用分隔符連接字符串項,可以使用String.Join

在.NET 3.5及更低版本中,這會將數組作為第二個參數,但在4.0中它有一個帶有IEnumerable<T>的重載,其中T在這種情況下是String

有了這些信息,這是您想要的代碼。

對於.NET 3.5:

string result = String.Join(", ",
    (from p in PersonList
     select p.LastName).ToArray());

對於.NET 4.0,您可以省略對ToArray的調用:

string result = String.Join(", ",
    from p in PersonList
    select p.LastName);

如果你想刪除LINQ語法並只使用LINQ擴展方法,那么這個變體就是一樣的:

對於.NET 3.5:

string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray());

對於.NET 4.0,您可以省略對ToArray的調用:

string result = String.Join(", ", PersonList.Select(p => p.LastName));

注意 :上面的3.5變體當然也適用於4.0,它們沒有刪除或替換舊方法,只是為典型情況添加了一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM