Esempio n. 1
0
        protected void Select(IList list)
        {
            MSSQLField[]  readables = table.GetFields(FieldFlags.Read);
            StringBuilder sql       = new StringBuilder();

            sql.Append("SELECT ");
            if (distinct)
            {
                sql.Append("DISTINCT ");
            }
            if (selectTop > 0)
            {
                sql.Append("TOP ").Append(selectTop).Append(" ");
            }
            bool first = true;

            foreach (MSSQLField f in readables)
            {
                if (!first)
                {
                    sql.Append(",");
                }
                first = false;
                sql.Append(database.QuoteName(f.Name));
            }
            sql.Append(" FROM ").Append(table.QuotedName);
            if (where.Length > 0)
            {
                sql.Append(" WHERE ").Append(where.ToString());
            }

            ForEachCallback callback = new ForEachCallback(delegate(IRow row)
            {
                object obj   = table.NewObject();
                object value = null;
                int i        = 0;
                foreach (MSSQLField f in readables)
                {
                    value = row[i++];
                    if (Convert.IsDBNull(value))
                    {
                        value = null;
                    }
                    f.SetValue(obj, value);
                }
                list.Add(obj);
            });

            using (MSSQLStatement stmt = database.Prepare(sql.ToString()) as MSSQLStatement)
                using (IQueryResult result = stmt.ExecQuery(values.ToArray()))
                {
                    result.ForEach(callback);
                }
        }