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

一个容易的LINQ 查询 【新手】 求解释

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

一个简单的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楼我给出的代码

热点排行