首页 新闻 会员 周边 捐助

asp.net linq拼接多条件查询

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-03 14:14

我用下面的拼接的方式查询出来的结果怎么都不对,始终有11条记录。

 

 

这儿的expression的and 是如下代码:
  

 /// <summary>
        /// Combines the first predicate with the second using the logical "and".
        /// </summary>
        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
        {
            return first.Compose(second, Expression.AndAlso);
        }

 

其实我传入的提交执行到最后的,应该是执行这样的一个查询:

 

select * from gg_Model where   gg_localType = 4 and gg_appID = 8170 and gg_Name like '%1%'

这个SQL语句执行查询的只有一个记录,但是程序里面的提交拼接查询就有11个记录,求大神指点,

  我这个怎么调试呢,我打断点进去都不知道怎么看,看错在哪里了呢

 

留下的枇杷的主页 留下的枇杷 | 初学一级 | 园豆:6
提问于:2015-02-28 19:34
< >
分享
最佳答案
0
 
 
 
 

你的这个逻辑写错了

foreach(var expression in list)

{

  productQueryTotal = expression.And(expression);

}

 

要改成

foreach(var expression in list)

{

  if(null == productQueryTotal)

  {

    productQueryTotal = expression.And(expression);

  }

  else

  {

    productQueryTotal = productQueryTotal.And(expression);

  } 

}

 
 
收获园豆:5
时之沙漠 | 菜鸟二级 |园豆:252 | 2015-03-01 15:58
其他回答(1)
0

我随便说三个方法吧

1、安装一个“表达式树查看器”,看看生成的Expression是啥样的,或者你断点看看,虽然抽象一点,好象也能看出点啥来。

2、DataContext是可以输出打算生成的SQL语句到LOG里面的。方法自己Google

3、假设你用的是SQL SERVER吧,SQL SERVER有一个工具叫SQL Profile,可以看到执行的SQL语句,

虽然LINQ拼出来的SQL语句很那个来着,不过仔细一点看也是能看出WHERE对不对的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-02-28 22:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册