2016-05-30 8 views
0

は、LINQのstatemantは、私がオブジェクトリストから配列に複数のプロパティを取得するにはどうすればよいですか?

List<ToSelectMany> elements = GetElements(); 
string[] elementArray = elements.SelectMany(a => a.ToSelect1, b => b.ToSelect2); 

といくつかの類似のものを試してみましたが、それは勝った

[0] "list element 1 - SelectMe1" 
[1] "list element 1 - SelectMe2" 
[2] "list element 2 - SelectMe1" 
[3] "list element 2 - SelectMe2" 
[4] "list element 3 - SelectMe1" 
[5] "list element 3 - SelectMe2" 
... 

のような配列に

private class ToSelectMany 
{ 
    public string SelectMe1 { get; set; } 
    public string SelectMe2 { get; set; } 
    public string IgnoreMeString { get; set; } 
    public bool IgnoreMeBool { get; set; } 
} 

のようなクラスのリストを転送するためにあります仕事はありません。

答えて

2

あなたは二つの文字列 foreach要素の配列を作成し、それらをconcatinateするSelectManyを使用する必要があります。

string[] elementArray = elements.Select(
    (a, i) => new string[] { 
       "list elment " + (i + 1) + " - " + a.SelectMe1, 
       "list elment " + (i + 1) + " - " + a.SelectMe2 
    }).SelectMany(x => x).ToArray(); 

またはより良い探して、C#6バージョン:

string[] elementArray = elements.Select(
    (a, i) => new string[] { 
       $"list elment {i+1} - {a.SelectMe1}", 
       $"list elment {i+1} - {a.SelectMe2}" 
    }).SelectMany(x => x).ToArray(); 
0
var i = 0; 
var list = new List<string>(); 
elements.ForEach(p=>{ 
    i++; 
    list.Add("list element " + i + " - " + p.SelectMe1); 
    list.Add(("list element " + i + " - " + p.SelectMe2); 
}); 
関連する問題