Lets sagen, ich habe eine List<IEnumerable<double>>
enthält variable Anzahl von unendlichen Quellen von doppelten Zahlen. Nehmen wir an, sie sind alle Wellengeneratorfunktionen und ich muss sie in einen einzelnen Wellengenerator überlagern, der durch IEnumerable<double>
repräsentiert wird, indem einfach die nächste Nummer aus jedem genommen wird.LINQ Zusammenführen Liste <IEnumerable <T>> in einem IEnumerable <T> durch eine Regel
Ich weiß, dass ich diese Methoden durch Iterator tun können, etwa wie folgt:
public IEnumerable<double> Generator(List<IEnumerable<double>> wfuncs)
{
var funcs = from wfunc in wfuncs
select wfunc.GetEnumerator();
while(true)
{
yield return funcs.Sum(s => s.Current);
foreach (var i in funcs) i.MoveNext();
}
}
aber es scheint eher „Fußgänger“. Gibt es einen LINQ-ischen Weg, dies zu erreichen?
'Select ', vielleicht? –
Aber wie? Ich versuchte, meinen Kopf darum zu wickeln, ohne Glück. Was ich brauche ist eine seltsame Variante von Zip() mit variabler Anzahl von Sequenzen. – mmix
nur wundernd. Warum würdest du es in LINQ wollen? Ihre Implementierung ist menschlich lesbar und ziemlich nett. –