Вы можете сделать это с помощью Aggregate
, хотя это немного сложно - и создает дополнительный объект для каждой итерации:
var sums = scores.Aggregate(new { Sum = 0, Count = 0 },
(current, item) => new { Sum = current.Sum + item.Score * item.Fraction,
Count = current.Count + item.Fraction });
Очевидно, что вы могли бы сделать это более эффективным, создав ValueTuple<T1, T2>
struct - как кортеж, но как struct.
EDIT: я согласен с точкой зрения Петара - если это all , что вам нужно сделать, то LINQ на самом деле не помогает в этой ситуации.