日期:2014-05-20  浏览次数:20789 次

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


------解决方案--------------------
 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");

------解决方案--------------------
引用:
Or:

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


------解决方案--------------------
first要是为null的话会抛异常
------解决方案--------------------
result 这个变量的类型是IQueryable,即使集合中没有元素,它也不是null

可以这样判断
if(!result.Any()) response.write("not exist");
------解决方案--------------------
跟Enumerable.Empty(), new List()类似,可以看成是一个空集合
------解决方案--------------------
没错,不过没必要
如果你用的ef之类的orm
result.FirstOrDefault() 生成的sql语句是 select top 2 * from...
result.Count() 是 select count(1) from...