2016-10-19 10 views
0

としてクラスの2つの代替的特性を有する配列構築:私はこのようなクラスの持つ要素

class Person 
{ 
    string Name; 
    string Job; 
} 

をそして、私はPersonのリストを持っていた:

List<Person> persons; 

今、私が書きたいですpersonsに基づいて配列を作成し、要素としてNameJobの代わりの値を持つ関数。例えば、私があれば持っていた:

persons.Add(new Person("Alice", "Accountant")); 
persons.Add(new Person("Bob", "Butler")); 
persons.Add(new Person("Chris", "Cleaner")); 

はその後、私の関数の結果は、このような文字列のシーケンスのようになります。

もちろん
"Alice", "Accountant", "Bob", "Butler", "Chris", "Cleaner" 

が、私はループを使用してこれを行うことができますが、I可能であれば、単一のLINQ行でそれを行う方法を見つけるのが好きです。

+2

を試します。 – Nkosi

+0

うわー、それは簡単ですか?ありがとう! – CesarGon

答えて

3

persons.SelectMany(P =>新規[] {p.Name、p.Job})この

persons.SelectMany(p => new[] { p.Name, p.Job }); 
1

あなたは2つのオプションがあります。あなたはStringListとして結果を持っているしたい場合は、

public override string ToString() 
{ 
    return Name + "," + Job; 
} 

:このようなPersonクラスの オーバーライドToString

List<string> result = persons.Select(c => c.ToString()).ToList(); 

またはSelectManyを使用あなたのリストを平らにする:

List<string> result2 = persons.SelectMany(p => new[] {p.Name, p.Job}).ToList(); 
関連する問題