using System.Collections.Generic;
using System.Diagnostics;
public static void Main()
Stopwatch sw = new Stopwatch();
var shipments = new List<Shipment>();
shipments.Add(new Shipment() { Number = 0 });
shipments.Add(new Shipment() { Number = 1 });
shipments.Add(new Shipment() { Number = 2 });
shipments.Add(new Shipment() { Number = 3 });
shipments.Add(new Shipment() { Number = 4 });
shipments.Add(new Shipment() { Number = 5 });
Console.WriteLine(sw.ElapsedTicks);
var shipments2 = new List<Shipment>();
shipments2.Add(new Shipment() { Number = 0 });
shipments2.Add(new Shipment() { Number = 1 });
shipments2.Add(new Shipment() { Number = 2 });
shipments2.Add(new Shipment() { Number = 3 });
shipments2.Add(new Shipment() { Number = 4 });
shipments2.Add(new Shipment() { Number = 5 });
DoSomethingWitAList(shipments2);
Console.WriteLine(sw.ElapsedTicks);
public static void DoSomething(IEnumerable<Shipment> items)
Console.WriteLine("item number " + items.First().Number);
var baseItem = items.First();
Console.WriteLine("base item number " + baseItem.Number);
for(int i = 1; i < items.Count(); i++)
Merge(baseItem, items.ElementAtOrDefault(i));
Console.WriteLine("base item number " + baseItem.Number);
public static void DoSomethingWitAList(IEnumerable<Shipment> items)
var list = items.ToList();
Console.WriteLine("item number " + items.First().Number);
Console.WriteLine("base item number " + baseItem.Number);
for(int i = 1; i < list.Count; i++)
Merge(baseItem, list[i]);
Console.WriteLine("base item number " + baseItem.Number);
private static void Merge(Shipment baseItem, Shipment toMerge)
baseItem.Number += toMerge.Number;
public int Number {get;set;}