私は、文字列、またはの文字列を含むオブジェクトのリストを持っています。私は "平坦化された"文字列のリストを抽出しようとしています。私には解決策がありますが、私はよりよい方法を見つけようとしています。異なる深さの文字列のリストを条件付きで平坦化するためのLinq
class Foo
{
public bool IsArray { get; set; }
public object Values { get; set; }
} //...
var innerList = new List<string> {"Inner111", "Inner222"}
var fooList = new List<Foo>();
fooList.Add(new Foo { IsArray = false, Values = "simpleVaue" });
fooList.Add(new Foo { IsArray = false, Values = innerList });
私の望ましい結果::私はいくつかの異なるLINQの方法を試してみた
["simpleVale","Inner111","Inner222"]
、選択SelectMany、集計、ここで
は、入力を作成するための簡単な手順です。 ..var outputListWithWastefulListCreation =
fooList.SelectMany<Foo, string>(z =>
{
if (!z.IsArray)
{
var wastefulList = new List<string> {z.Values.ToString()};
return wastefulList;
}
var listObject = (IEnumerable<string>) z.Values;
return listObject;
});
ここでも、私の望ましい結果:
["simpleVale","Inner111","Inner222"]
私はより良い方法がなければならないと確信していますか?