using System.Collections.Generic;
public static (int, int) SumCount(IEnumerable<int> source) => (source.Sum(), source.Count());
public static (int, int) SumCountWithAggregate(IEnumerable<int> source) => source.Aggregate((0, 0), (a, b) => (a.Item1 + b, a.Item2 + 1));
public static (int, int, int) SumCount2(IEnumerable<int> source, Func<int, bool> predicate)
var results = source.ToLookup(predicate);
var (evenSum, evenCount) = SumCount(results[true]);
var (oddSum, oddCount) = SumCount(results[false]);
return (evenSum + oddSum, evenCount, oddCount);
public static IEnumerable<int> RangeWithoutStart(int start, int end) => Enumerable.Range(start + 1, end - start - 1);
public static void Main()
var range = RangeWithoutStart(start, end);
var (sum, evenCount, oddCount) = SumCount2(range, x => x % 2 == 0);
Console.WriteLine($"Sum - { sum } | Even - { evenCount } | Odd - {oddCount}");