读书人

判断用户是否存在如果查询不存在小

发布时间: 2012-12-28 10:29:05 作者: rapoo

判断用户是否存在,如果查询不存在,我下面的代码返回结果是null吗?
如果不存在,打印不存在!我下面的判断对吗?好像select后面可以加任意值,是不是这样?但是linq不是有个延迟查询码?好像我写的代码,result永远不为null?


//创建LINQ查询语句,判断用户名是否存在
var result = from v in ddc.Users
where v.Name==tbUserName.Text.Trim()
select v;
if(result==null) response.write("not exist");


[最优解释]
没错,不过没必要
如果你用的ef之类的orm
result.FirstOrDefault() 生成的sql语句是 select top 2 * from...
result.Count() 是 select count(1) from...
[其他解释]
var result = from v in ddc.Users
where v.Name==tbUserName.Text.Trim()
select v;
if(result.FirstOrDefault()==null) response.write("not exist");

[其他解释]
Or:

if(result.Count()==0) response.write("not exist");

[其他解释]
result 这个变量的类型是IQueryable,即使集合中没有元素,它也不是null

可以这样判断
if(!result.Any()) response.write("not exist");
[其他解释]
跟Enumerable.Empty(), new List()类似,可以看成是一个空集合
[其他解释]
引用:
Or:

if(result.Count()==0) response.write("not exist");


[其他解释]
first要是为null的话会抛异常
[其他解释]
引用:
var result = from v in ddc.Users
where v.Name==tbUserName.Text.Trim()
select v;
if(result.FirstOrDefault()==null) response.write("not exist");
……

谢谢1楼,
First - 返回集合中的第一个元素;不延迟
FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟

PS:
1.一定要用FirstOrDefault,不能用first?用first会出现异常?
2.最后select v是把整个表都查出来,感觉没有必要,你们平时查的时候,最后一个写的是啥?

[其他解释]
引用:
result 这个变量的类型是IQueryable,即使集合中没有元素,它也不是null

可以这样判断
if(!result.Any()) response.write("not exist");

result 这个变量的类型是IQueryable,即使集合中没有元素,它也不是null
请问不是null,那是什么?
------其他解决方案--------------------


引用:
跟Enumerable.Empty(), new List()类似,可以看成是一个空集合

那请问像2楼那种写法有没有错?
var result = from v in ddc.Users
where v.Name==tbUserName.Text.Trim()
select v;
if(result.FirstOrDefault()==null) response.write("not exist");
result.FirstOrDefau的默认值应该是null了吧????

读书人网 >.NET

热点推荐