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

一个简单的LINQ 查询 【新手】 求解释
请问下面2个查询条件有什么区别,就where条件的顺序换了下。。 麻烦解释下这个查询语句  谢谢 

var user = from u in db.UserManage
                       where (string.IsNullOrEmpty(age)) ? true : (u.age == a)
                       && (string.IsNullOrEmpty(userName)) ? true : u.userName.Contains(userName)
                       select u;

-------------------------------------------------------------------------------------

var user = from u in db.UserManage
                       where (string.IsNullOrEmpty(userName)) ? true : u.userName.Contains(userName)
                       && (string.IsNullOrEmpty(age)) ? true : (u.age == a)
                       select u;
------解决方案--------------------
打个比方:
第一个查询是这样:  从年龄等于18岁的人中找姓张的

第二个查询: 从姓张的人中找年龄是18岁的

我建议你这么写:
var user = from u in db.UserManage select u;
if(!string.IsNullOrEmpty(age))
   user=user.Where(u=>u.age == age);
if(!string.IsNullOrEmpty(userName))
    user=user.Where(u=>u.userName.Contains(userName));


参考:
http://blog.csdn.net/q107770540/article/details/5724013
------解决方案--------------------
引用:
打个比方:
第一个查询是这样:  从年龄等于18岁的人中找姓张的

第二个查询: 从姓张的人中找年龄是18岁的

我建议你这么写:
var user = from u in db.UserManage select u;
if(!string.IsNullOrEmpty(age))
   user=user.Where(u=>u.age == age);
if(!string.IsNullOrEmpty(userName))
    user=user.Where(u=>u.userName.Contains(userName));


参考:
http://blog.csdn.net/q107770540/article/details/5724013


从年龄等于18岁的人中找姓张的和从姓张的人中找年龄是18岁的结果是一样的。
从逻辑上来说,就是a and b = b and a
------解决方案--------------------
从你的代码来看,两个条件之间的关系是并的关系
所以你可以参考2楼我给出的代码