解决方案 »

  1.   

    哈哈。自己解决了。原来我本意是模糊搜索,所以在传入Lamp和Factroy两个值的时候,自己在C#里就把匹配符%%给加了上去。
    结果SQL server不认可。刚刚反应过来了,然后去改了一下。没有想到就真的是这个原因。我做这个就是查询AB两个条件的。当我输入A时,利用A,在窗体中显示出相关的东东,然后输入B的时候就是两个都相关。
    在两个TextBox里我都写了同一个事件TextChanged。这样算是动态查询吗?
      

  2.   

    要是连通配符也能传递进去,那还不SQL注入了
      

  3.   

    使用的一个建议 不要使用count(*),特别是用exists做判断的时候,增加了很多不必要的消耗
      

  4.   

    exists 时 select 1 
    count时 count(1)
      

  5.   

    o.o
    哦。谢谢你咯。受教了,1是代表第一列是吧不是 他是一个值,不代表一列。
    百度了一下,原来如此,长知识啊
    http://zhidao.baidu.com/link?url=BNaLgknNAWggddEoRfJKztqzQoa8m-sZhJfsh02ZqzFWXfQVjuOMEeLRmA2nxuPxSrmpj-1wCORhX3U8E91H_K
      

  6.   

    o.o
    哦。谢谢你咯。受教了,1是代表第一列是吧不是 他是一个值,不代表一列。
     var strWhere = PredicateBuilder.True<Apply_Form_List_View>();
                strWhere = strWhere.And(x => x.isSynchron == 0);
                strWhere = strWhere.And(x => x.School_Id == schoolid);
                if (findparam["stu"] != null) 
                {
                    string stu = findparam["stu"].ToString();
                    strWhere = strWhere.And(s => s.F_FirstName.Contains(stu));
                }
                if (findparam["course"] != null)
                {
                    string course = findparam["course"].ToString();
                    strWhere = strWhere.And(s => s.Course_Title.Contains(course));
                }  var query = nContext.Apply_Form_List_View.AsExpandable().Where(strWhere).ToList();就是这样的动态
      

  7.   

    Microsoft SQL Server 版
      

  8.   

    o.o
    哦。谢谢你咯。受教了,1是代表第一列是吧不是 他是一个值,不代表一列。
     var strWhere = PredicateBuilder.True<Apply_Form_List_View>();
                strWhere = strWhere.And(x => x.isSynchron == 0);
                strWhere = strWhere.And(x => x.School_Id == schoolid);
                if (findparam["stu"] != null) 
                {
                    string stu = findparam["stu"].ToString();
                    strWhere = strWhere.And(s => s.F_FirstName.Contains(stu));
                }
                if (findparam["course"] != null)
                {
                    string course = findparam["course"].ToString();
                    strWhere = strWhere.And(s => s.Course_Title.Contains(course));
                }  var query = nContext.Apply_Form_List_View.AsExpandable().Where(strWhere).ToList();就是这样的动态SqlExpression<MiningChute> ev = OrmLiteConfig.DialectProvider.SqlExpression<MiningChute>();
                ev.Where(o => o.CurrentDate >= begDate);
                ev.And(o => o.CurrentDate <= endDate);
                if (shift > 0)
                {
                    ev.And(o => o.Shift == shift);
                }
                ev.OrderByDescending(o => o.CurrentDate).ThenBy(o => o.Shift);
                using (var db = Database.Create())
                {
                    List<MiningChute> list = db.Select<MiningChute>(ev);
                    var packet = new PacketWriter(5110, reciveID);
                    packet.WriteSerialize(list);
                    Context.SendToClient(connectionID, packet.Compile());
                }
    这个不就是么
      

  9.   

    o.o
    哦。谢谢你咯。受教了,1是代表第一列是吧不是 他是一个值,不代表一列。
     var strWhere = PredicateBuilder.True<Apply_Form_List_View>();
                strWhere = strWhere.And(x => x.isSynchron == 0);
                strWhere = strWhere.And(x => x.School_Id == schoolid);
                if (findparam["stu"] != null) 
                {
                    string stu = findparam["stu"].ToString();
                    strWhere = strWhere.And(s => s.F_FirstName.Contains(stu));
                }
                if (findparam["course"] != null)
                {
                    string course = findparam["course"].ToString();
                    strWhere = strWhere.And(s => s.Course_Title.Contains(course));
                }  var query = nContext.Apply_Form_List_View.AsExpandable().Where(strWhere).ToList();就是这样的动态SqlExpression<MiningChute> ev = OrmLiteConfig.DialectProvider.SqlExpression<MiningChute>();
                ev.Where(o => o.CurrentDate >= begDate);
                ev.And(o => o.CurrentDate <= endDate);
                if (shift > 0)
                {
                    ev.And(o => o.Shift == shift);
                }
                ev.OrderByDescending(o => o.CurrentDate).ThenBy(o => o.Shift);
                using (var db = Database.Create())
                {
                    List<MiningChute> list = db.Select<MiningChute>(ev);
                    var packet = new PacketWriter(5110, reciveID);
                    packet.WriteSerialize(list);
                    Context.SendToClient(connectionID, packet.Compile());
                }
    这个不就是么db.From<Book>().Select(x => new { x.ID, x.Name }).Where(ev)
    这么写为什么不对,我既想筛选字段,又想动态查询(ev是动态表达式树)
      

  10.   

    db.From<Book>().Select(x => new { x.ID, x.Name }) 你这样之后,集合对像就不是Book 了。变成了匿名集合了。
      

  11.   

    o.o
    哦。谢谢你咯。受教了,1是代表第一列是吧不是 他是一个值,不代表一列。
     var strWhere = PredicateBuilder.True<Apply_Form_List_View>();
                strWhere = strWhere.And(x => x.isSynchron == 0);
                strWhere = strWhere.And(x => x.School_Id == schoolid);
                if (findparam["stu"] != null) 
                {
                    string stu = findparam["stu"].ToString();
                    strWhere = strWhere.And(s => s.F_FirstName.Contains(stu));
                }
                if (findparam["course"] != null)
                {
                    string course = findparam["course"].ToString();
                    strWhere = strWhere.And(s => s.Course_Title.Contains(course));
                }  var query = nContext.Apply_Form_List_View.AsExpandable().Where(strWhere).ToList();就是这样的动态SqlExpression<MiningChute> ev = OrmLiteConfig.DialectProvider.SqlExpression<MiningChute>();
                ev.Where(o => o.CurrentDate >= begDate);
                ev.And(o => o.CurrentDate <= endDate);
                if (shift > 0)
                {
                    ev.And(o => o.Shift == shift);
                }
                ev.OrderByDescending(o => o.CurrentDate).ThenBy(o => o.Shift);
                using (var db = Database.Create())
                {
                    List<MiningChute> list = db.Select<MiningChute>(ev);
                    var packet = new PacketWriter(5110, reciveID);
                    packet.WriteSerialize(list);
                    Context.SendToClient(connectionID, packet.Compile());
                }
    这个不就是么db.From<Book>().Select(x => new { x.ID, x.Name }).Where(ev)
    这么写为什么不对,我既想筛选字段,又想动态查询(ev是动态表达式树)
    db.From<Book>().Select(x => new { x.ID, x.Name }) 你这样之后,集合对像就不是Book 了。变成了匿名集合了。
      

  12.   

    如何解决?db.From<Book>().Where(ev).Select(x => new { x.ID, x.Name }) 这样写才对
      

  13.   

    如何解决?db.From<Book>().Where(ev).Select(x => new { x.ID, x.Name }) 这样写才对
    不对