예제 #1
0
        /// <summary>複数条件の場合はこのメソッドをその回数分呼び出してください。</summary>
        public Sqlam <T> OrderBy(Expression <Func <T, object> > field, Order order = Order.Asc)
        {
            var fieldName = ExprNameResolver.GetExprName(field.Body);

            parser.ParseOrderBy(fieldName, order);
            return(this);
        }
예제 #2
0
        /// <summary>WHERE IN</summary>
        public Sqlam <T> In(Expression <Func <T, object> > field, IEnumerable <object> values)
        {
            var fieldName = ExprNameResolver.GetExprName(field.Body);

            parser.And();
            parser.ParseIsIn(fieldName, values);
            return(this);
        }
예제 #3
0
        /// <summary>
        /// 二項演算子。左辺にフィールド、右辺に値。WHERE条件式の構築に使用
        /// </summary>
        public void ParseAnd(BinaryExpression node)
        {
            // 左辺チェック
            var fieldName = ExprNameResolver.GetExprName(node.Left);

            // 右辺チェック。リテラル、フィールド、プロパティなどExpressionTypeが様々なのでResolverを使う
            var fieldValue = ExprValueResolver.GetExprValue(node.Right);

            // オペレータチェック
            string oper;

            if (!operatorDict.TryGetValue(node.NodeType, out oper))
            {
                throw new KeyNotFoundException("Suitable operator not found. Key is " + node.NodeType);
            }

            QueryByField(fieldName, oper, fieldValue);
        }