首页 新闻 会员 周边

判断IQueryable<T>存不存在

0
[已解决问题] 解决于 2013-01-11 23:13

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就可以了?

BorgChen的主页 BorgChen | 初学一级 | 园豆:11
提问于:2013-01-09 08:14
< >
分享
最佳答案
0

不用检查null的情况,如果出现了null,去喷写这个方法的人。“查不到满足条件的数据”在任何情况下都应当返回一个空集合,而不是null。

奖励园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2013-01-09 09:37

不管是取单条记录,还是取集合都是返回空集吗?只有在要对条目赋值的情况才要检查null?

BorgChen | 园豆:11 (初学一级) | 2013-01-09 17:11

@BorgChen: 如果你的方法签名是这样:

public IQueryable<User>  List(xxx条件)

那么没有结果就返回空集,任何情况都不返回null。如果签名是:

public User Get(能确定1条记录的条件)

那么通过返回值是否为null判断有没有取到数据。总之,在查询的时候,如果是返回一个集合的,这个集合无论如何都不应该是null,没有记录就是一个count为0的空集合。

水牛刀刀 | 园豆:6350 (大侠五级) | 2013-01-10 09:40

@水牛刀刀: 谢谢!

BorgChen | 园豆:11 (初学一级) | 2013-01-11 23:13
其他回答(2)
0

List.Any(c=>c!=null)

RyanCheng | 园豆:474 (菜鸟二级) | 2013-01-09 08:53
0

如果你的方法里 有判断然后赋值为null的情况,就要判断null,否则不会为null。从一个集合里查一个子集,最多就是没查到,数量为0,不存在null,一般用 _userRepository.List().Count()==0 就可以了。

Qlin | 园豆:2403 (老鸟四级) | 2013-01-09 09:00

不管是取单条记录,还是取集合都是返回空集吗?只有在要对条目赋值的情况才要检查null?

支持(0) 反对(0) BorgChen | 园豆:11 (初学一级) | 2013-01-09 17:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册