Exemplo n.º 1
0
        /// <summary>
        /// 根据指定的条件,从数据阅读器中赛选出需要的实体对象。本方法适用于数据量不是很大的数据库表,要加强效率,请使用OQL表达式。
        /// </summary>
        /// <param name="condition">查询条件</param>
        /// <returns>实体对象列表</returns>
        public static List <T> QueryList(ConditionHandle <T> condition)
        {
            AdoHelper   db     = MyDB.Instance;
            T           entity = new T();
            string      sql    = "SELECT " + string.Join(",", entity.PropertyNames) + " FROM " + entity.TableName;
            IDataReader reader = db.ExecuteDataReader(sql);
            List <T>    list   = new List <T>();

            using (reader)
            {
                int fcount = entity.PropertyNames.Length;
                while (reader.Read())
                {
                    object[] values = new object[fcount];
                    reader.GetValues(values);

                    T t = new T();
                    t.PropertyNames  = entity.PropertyNames;
                    t.PropertyValues = values;

                    if (condition(t)) //根据条件过滤
                    {
                        list.Add(t);
                    }
                }
            }
            return(list);
        }
 public void AttachPreprocessorMacro(string macro, ConditionHandle conditionHandle = null)
 {
     if (ConditionsPerMacro.ContainsKey(macro))
     {
         _Builder.FlagIncomplete(ReverseFileConditionWarning.MultipleConditionsPerMacro);
     }
     ConditionsPerMacro[macro] = conditionHandle;
 }
 public void AttachFile(string encodedPath, ConditionHandle conditionHandle = null)
 {
     if (ConditionsPerFile.ContainsKey(encodedPath))
     {
         _Builder.FlagIncomplete(ReverseFileConditionWarning.MultipleConditionsPerFile);
     }
     ConditionsPerFile[encodedPath] = conditionHandle;
 }
            public void AttachIncludeDirectoryCondition(string dir, ConditionHandle conditionHandle)
            {
                if (!IncludeDirs.TryGetValue(dir, out var value))
                {
                    throw new Exception("Unknown include dir: " + dir);
                }
                if (value != null)
                {
                    throw new Exception("Include dir already conditional: " + dir);
                }

                IncludeDirs[dir] = conditionHandle;
            }