2009-08-25 7 views
12
class Person 
{ 
public string FirstName { get; set; } 
public string LastName { get; set; } 
} 

List<Person> theList = populate it with a list of Person objects 

リスト内のオブジェクトのFirstNameをすべて含む文字列をカンマで区切って取得するにはどうすればよいですか。例: John、Peter、Jack特定のプロパティのオブジェクトの総称リストを結合する方法

基本的な解決策は、各オブジェクトを反復することですが、私は1行の解決策があると確信しています。

ありがとうございました。

答えて

18

更新(.NET 4のような) string.Joinは今IEnumerable<string>を受け取るオーバーロードがあります - イェーイ!(古い) 4.0以下

string.Join(",", theList.Select(p => p.FirstName)); 

.NETバージョンの

string.Join(",", theList.ConvertAll(person => person.FirstName).ToArray()); 

部品に分解:

List<T>.ConvertAllは、別の型にList<T>を変換する - この場合、 a List<string>

ToArray()は、List<string>string[]に変換します。

string.Join()文字列の配列(2番目のパラメータ)を1つの文字列として、最初のパラメータで区切って書き込みます。

+2

ソリューション "Update(.NET 4以降)"はFirstNamesにのみ参加しますか? – mts1701

+0

.NET 4ソリューションでは、select:String.Join( "、" theList.Select(p => p.FirstName)); – goodeye

6

また、これは、配列を作成する必要がなくなります

string output = theList.Select(p => p.FirstName).Aggregate((progress, next) => progress + ", " + next); 

クエリ拡張メソッドを使用することができます。

関連する問題