1. 程式人生 > >Linq中First和Single 的區別

Linq中First和Single 的區別

語法層面就不講了如 First 和 Firstordefault

先上一段程式碼

void Main()
{
	
Stopwatch sw=new Stopwatch();    List<int> list=new List<int>();  for(int i=0;i<10000000;i++)  {  list.Add(i);  }   sw.Start();  list.First (p=>p>1000000 );  sw.Stop();  Console.WriteLine("First:"+sw.Elapsed.Milliseconds.ToString());  sw.Start();  list.Single(p=>p==1000000);  sw.Stop();  Console.WriteLine("Single:"+sw.Elapsed.Milliseconds.ToString()); } 上面程式碼 呼叫first及SINGLE方法所花的時間差異較大
幾次呼叫,基本上只有微量差異,就以上面的數為準了為什麼呢。不都是返回一個物件嗎。First(): 找到符合條件的第一記錄,就返回了,不管你後面還有多少資料Single(): 先將記錄都梳理一次,再找到符合自己要求的唯一記錄(不能有多個,不然會出錯的)。從上面的實驗資料來看,應該是使用First()效能高,但也不能絕對這樣說,如果是使用資料庫,那會使用資料庫索引。不見得比First()方法慢。