/// <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; }