Ich habe eine Liste von Objekten, die eine Zeichenfolge enthalten, OR eine Liste von Zeichenfolgen. Ich versuche eine Liste von "abgeflachten" Strings zu extrahieren. Ich habe eine Lösung, aber ich versuche einen besseren Weg zu finden.Linq zum bedingten Abflachen einer Liste von Strings mit unterschiedlicher Tiefe
Hier sind die einfachen Schritte, um die Eingabe zu erstellen:
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 });
Mein gewünschte Ergebnis:
["simpleVale","Inner111","Inner222"]
ich ein paar verschiedene Linq Methoden, Select, Aggregate, Select versucht haben. ..
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;
});
Wieder mein gewünschtes Ergebnis:
["simpleVale","Inner111","Inner222"]
Ich bin sicher, es muss ein besserer Weg geben?