无实体查询中where条件的or要怎么写 返回

SqlSugar 沟通中
5 518

db.Queryable<object>().AS("测试表").Where().ToDataTable();

用的上方的方式,想实现一个SQL:select * from 测试表 where 列1='A' or 列2='B'

无实体的方式要怎么实现这个or

热忱回答5

  • fate sta fate sta VIP0
    1个月前

    db.Queryable<object>().AS("测试表").Where(“ 1='A' or 列2='B' ”).ToDataTable();

    0 回复
  • @fate sta:这样就没法支持多库了吧

    0 回复
  • fate sta fate sta VIP0
    1个月前

    https://www.donet5.com/Home/Doc?typeId=2314

    标题二可以实现多库

    0 回复
  • 感谢,实现了

            var a = new ConditionalModel {
                FieldName = "列1",
                FieldValue = "A",
                ConditionalType = ConditionalType.Equal,
            };
            var b = new ConditionalModel {
                FieldName = "列2",
                FieldValue = "B",
                ConditionalType = ConditionalType.Equal
            };
            var wheres = new List<IConditionalModel>();
            wheres.Add(new ConditionalCollections() {
                ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>> {
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.Or, a),
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.Or, b),
                }
            });
            DataTable dt = db.Queryable<object>().AS("测试表").Where(wheres).ToDataTable();


    0 回复
  • @fate sta:where (表名='A' and 列名='B') or (表名='C' and 列名='D')

    上面这种条件要怎么写啊?我尝试使用下面的方法失败了,主要是ConditionalCollections只支持ConditionalModel类型而不是IConditionalModel接口


            var a = new ConditionalModel {
                FieldName = "表名",
                FieldValue = "A",
                ConditionalType = ConditionalType.Equal,
            };
            var b = new ConditionalModel {
                FieldName = "列名",
                FieldValue = "B",
                ConditionalType = ConditionalType.Equal
            };
            var c = new ConditionalModel {
                FieldName = "表名",
                FieldValue = "C",
                ConditionalType = ConditionalType.Equal,
            };
            var d = new ConditionalModel {
                FieldName = "列名",
                FieldValue = "D",
                ConditionalType = ConditionalType.Equal
            };
            var wheres = new List<IConditionalModel>();
            var a1 = new ConditionalCollections() {
                ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>> {
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.And, a),
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.And, b),
                }
            };
            var a2 = new ConditionalCollections() {
                ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>> {
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.And, c),
                    new KeyValuePair<WhereType, ConditionalModel> (WhereType.And, d),
                }
            };
            var conditional = new ConditionalTree() {
                ConditionalList = new List<KeyValuePair<WhereType, IConditionalModel>> {
                    new KeyValuePair<WhereType, IConditionalModel> (WhereType.Or, a1),
                    new KeyValuePair<WhereType, IConditionalModel> (WhereType.Or, a2),
                }
            };
            wheres.Add(conditional);
            DataTable dt = db.Queryable<object>().AS("sys_列数据").Where(wheres).ToDataTable();


    0 回复