Single(), SingleOrDefault(), First() & FirstOrDefault()的区别
先说XXX() & XXXOrDefault()的区别,这个很好理解,无论Single() or First(),当数据源不存在数据时,将会抛出异常。所以多数情况下,我们一般会选用XXXOrDefault()方法。
再说Single() 与 First()的区别:
当调用Single()方法的时候,生成的sql语句会类似:SELECT TOP 2 .... FROM ...;而First()的sql语句却是:SELECT TOP 1 ... FROM ...。First的语义是从若干数据里取出第一笔记录,而Single的意思是应该有且只有一笔记录,所以这个方法生成的sql会是TOP 2,当返回的数据有2笔时,则会抛出异常。