asp.net mvc,repository模式,
IQueryable<T> List(...)
{
return ...
}
应该怎么判断有没有行,逻辑比较完整
用 _userRepository.List()==null,还是 _userRepository.List().Count()==0
还是两者都用, _userRepository.List()==null && _userRepository.List().Count()==0
如果是Item(int id),是不是只要判断_userRepository.Item(111)=null就可以了?
不用检查null的情况,如果出现了null,去喷写这个方法的人。“查不到满足条件的数据”在任何情况下都应当返回一个空集合,而不是null。
不管是取单条记录,还是取集合都是返回空集吗?只有在要对条目赋值的情况才要检查null?
@BorgChen: 如果你的方法签名是这样:
public IQueryable<User> List(xxx条件)
那么没有结果就返回空集,任何情况都不返回null。如果签名是:
public User Get(能确定1条记录的条件)
那么通过返回值是否为null判断有没有取到数据。总之,在查询的时候,如果是返回一个集合的,这个集合无论如何都不应该是null,没有记录就是一个count为0的空集合。
@水牛刀刀: 谢谢!
List.Any(c=>c!=null)
如果你的方法里 有判断然后赋值为null的情况,就要判断null,否则不会为null。从一个集合里查一个子集,最多就是没查到,数量为0,不存在null,一般用 _userRepository.List().Count()==0 就可以了。
不管是取单条记录,还是取集合都是返回空集吗?只有在要对条目赋值的情况才要检查null?