Пример #1
0
        public virtual string MakeWhereClause(Dictionary<string, object> keyFields, string paramPrefix = "", bool useParameters = true)
        {
            keyFields = keyFields ?? new Dictionary<string, object>();

            // TODO: Figure out how to pass null values as parameters
            // instead of hardcoding them in here
            var nullFields = keyFields.WhereValues(v => v == DBNull.Value || v == null).Keys;
            var nullFieldParts = nullFields.Select(x => x + " is null");

            var nonNullFields = keyFields.Except(nullFields).Keys;
            var nonNullFieldParts =
                useParameters ?
                    nonNullFields.Select(x => x + " = @" + paramPrefix + x) :
                    nonNullFields.Select(x => x + " = " + SqlLiteral(keyFields[x]));

            var whereClause = "";
            if (keyFields.Any())
                whereClause = " WHERE " + nullFieldParts.And(nonNullFieldParts).Join(" AND ");

            return whereClause;
        }
Пример #2
0
        public void WhereValues()
        {
            var dict = new Dictionary<string, int>() { { "one", 1 }, { "two", 2 }, { "three", 3 } };

            Assert.AreEqual("([one,1],[two,2])", dict.WhereValues(v => v < 3).Print());
        }