SingleOrDefault & FirstOrDefault

紀錄兩者之間的區別

在使用Entity framwork取得資料時,若只想取得單筆資料

可以使用SingleOrDefault() or FirstOrDefault(),兩個Function有不同的特性如下
FirstOrDefault():
資料為 0 筆 – return null
資料為 1 筆 – 回傳該筆資料
資料為 多 筆 – 回傳第一筆資料(按照資料排序)

SingleOrDefault():
資料為 0 筆 – return null
資料為 1 筆 – 回傳該筆資料
資料為 多 筆 – throw exception

// 不透過Key值取得資料
TABLE_NAME data1 = new myEntities().TABLE_NAME.SingleOrDefault();
TABLE_NAME data2 = new myEntities().TABLE_NAME.FirstOrDefault();
 
// 透過Key值為條件判斷
TABLE_NAME data3 = new myEntities().TABLE_NAME.SingleOrDefault(x => x.Key == key);
TABLE_NAME data4 = new myEntities().TABLE_NAME.FirstOrDefault(x => x.Key == key);

data1 – 
若TABLE_NAME資料表有一筆以上資料,則data1會throw exception

data3 – 
若透國key值取得的資料為多筆,則data3會throw exception