Если у вас есть два способа объединения данных, вы можете использовать метод zip (.Net 4.0), например, так:
var Total = currentData.Zip(previousData,(current,previous) => current.indicator != previous.indicator ? current.amount : 0).Sum();
если вы не используете .net 4.0, вы можете использовать эту реализацию zip:
static class Enumerable
{
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> func)
{
var ie1 = first.GetEnumerator();
var ie2 = second.GetEnumerator();
while (ie1.MoveNext() && ie2.MoveNext())
yield return func(ie1.Current, ie2.Current);
}
}
источник