The Aggregate operator has an overload that takes a seed value as the first parameter. The seed value is the initial value of the accumulator and can be any type you want. The function you pass to the operator must then take two parameters: one of the same type as the seed value and one of the same type as the elements in your collection. The function must also return a value of the same type as the seed value. The seed value can be useful when you want to perform calculations that involve different types or start from a different base. For example, if you want to concatenate all the strings in a collection with a comma separator, you can use an empty string as the seed value and a function that appends a comma and an element to the accumulator:
using System.Linq;
string[] words = { "hello", "world", "linq", "aggregate" };
string concatenated = words.Aggregate("", (a, b) => a + "," + b); // concatenated is ",hello,world,linq,aggregate"