DAL.User myUser = dataContext.Users.Single(p => p.UserName == userName);      如果Users表中没有符合  p.UserName == userName 条件的,则抛出了异常?难道没有匹配的不是返回null?

解决方案 »

  1.   

    Single()返回唯一一条记录,如果List的Count!=1抛异常
      

  2.   

    嗯,是的。可以考虑用另一个 SingleOrDefault。Single:返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。
    SingleOrDefault:返回序列中的唯一元素;如果该序列为空,则返回默认值;如果该序列包含多个元素,此方法将引发异常。如果你要返回 null。就捕一下异常自己处理吧。因为 linq 是通用的,也会对值类型起作用。
    比如,对于一个 double singleValue = doubleList.Single() ,你不能要求它返回一个 null 吧。
      

  3.   

    你应该用SingleOrDefault或者FirstOrDefault,Single就是要抛异常的...
      

  4.   

    能讲一下SingleOrDefault和FirstOrDefault的区别么。
      

  5.   

    唉,在IDE里鼠标指向这个方法,他本身就会给你相关说明
      

  6.   

    SingleOrDefault 只取一个 如没有 null 如果>1  异常
    FirstOrDefault  只取一个  如果没有null 如果>1 取第一个
      

  7.   

    对的
    SingleOrDefault
    不会抛异常