首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

判断用户是否存在,如果查询不存在,小弟我上面的代码返回结果是null吗

2012-12-28 
判断用户是否存在,如果查询不存在,我下面的代码返回结果是null吗?如果不存在,打印不存在!我下面的判断对吗

判断用户是否存在,如果查询不存在,我下面的代码返回结果是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了吧????

热点排行