using System.Collections.Generic;
using System.Diagnostics;
public static void Main()
IEnumerable<Item> items = Enumerable.Range(0,100).Select(a=> new Item(a));
items = items.OrderBy( x=> new Guid()).ToList();
var items2 = items.OrderBy( x=> new Guid()).ToList();
Func<Item,bool> filter = x => x.Size == n;
Run("Where First", () => {
items.Where( filter ).First();
items2.Where( filter ).First();
filter = x => x.Size < n;
Run("Where First", () => {
items.Where( filter ).First();
items2.Where( filter ).First();
filter = x => x.Size > n;
Run("Where First", () => {
items.Where( filter ).First();
items2.Where( filter ).First();
public String Name{ get;set; }
public int Size {get;set;}
public static void Run(String title, Action action){
Stopwatch watch = Stopwatch.StartNew();
for(int i=0;i<10000;i++){
Console.WriteLine("{0} milliseconds for {1}", watch.ElapsedMilliseconds, title);