関数が以下で説明するように、特定の方法で 2 つのリストをマージする必要があります。この実装は再帰を使用して動作しますが、扱いにくいようです。LINQでこれを行うためのより良い方法を知っている人はいますか?外側の(フラット化されていない)要素を参照できるaのようなものがあるはずですが、SelectMany
何も見つかりません
/// <summary>
/// Function merges two list by combining members in order with combiningFunction
/// For example (1,1,1,1,1,1,1) with
/// (2,2,2,2) and a function that simply adds
/// will produce (3,3,3,3,1,1,1)
/// </summary>
public static IEnumerable<T> MergeList<T>(this IEnumerable<T> first,
IEnumerable<T> second,
Func<T, T, T> combiningFunction)
{
if (!first.Any())
return second;
if (!second.Any())
return first;
var result = new List<T> {combiningFunction(first.First(), second.First())};
result.AddRange(MergeList<T>(first.Skip(1), second.Skip(1), combiningFunction));
return result;
}