コード例 #1
0
ファイル: Expression.cs プロジェクト: maikebing/SharpHSQL
        /// <summary>
        /// Test the value list for True or False.
        /// </summary>
        /// <param name="o"></param>
        /// <param name="datatype"></param>
        /// <returns></returns>
        private bool TestValueList(object o, ColumnType datatype)
        {
            if (_type == ExpressionType.ValueList)
            {
                if (datatype != _columnType)
                {
                    o = Column.ConvertToObject(o, _columnType);
                }

                return(_list.ContainsKey(o));
            }
            else if (_type == ExpressionType.Query)
            {
                // todo: convert to valuelist before if everything is resolvable
                Result     r    = sSelect.GetResult(0, null);
                Record     n    = r.Root;
                ColumnType type = r.Type[0];

                if (datatype != type)
                {
                    o = Column.ConvertToObject(o, type);
                }

                while (n != null)
                {
                    object o2 = n.Data[0];

                    if (o2 != null && o2.Equals(o))
                    {
                        return(true);
                    }

                    n = n.Next;
                }

                return(false);
            }

            throw Trace.Error(Trace.WRONG_DATA_TYPE);
        }