消息关闭
    暂无新消息!

ASP.NET MVC的查询问题

问题作者 : 分析家2017-08-19发布
 private List<Questionnaire> GetquInShow(string safesql)
        {
            List<Questionnaire> list = new List<Questionnaire>();
            DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString, CommandType.Text, safesql);
            if (ds.Tables.Count > 0)
            {
                DataTable dt = ds.Tables[0];
                foreach (DataRow row in dt.Rows)
                {
                    Questionnaire qu = new Questionnaire();
                    qu.ID = (int)row["ID"];
                    qu.QUID = (int)row["QUID"];
                    list.Add(qu);
                }
            }
            return list;
        }
        public List<Questionnaire> GetQuestionnaire()
        {
            string sql = "";
            sql = "select * from Questionnaire order by ID";
            return GetquInShow(sql);
        }

我查询都是这样子查询的,但是现在问题是SQL的表名和列名会变。这样我list<>就出问题了。我应该怎么写。听说是用泛型?但是我不太懂这个。百度了一下,看的我更加蒙了,现在来求解!!能用立刻结贴给分!

5个回答

︿ 2
    public class Test2
    {
        public void t()
        {
            Test<Questionnaire> t = new Test<Questionnaire>();
            string sql = "";
            var list = t.GetquInShow(sql);            
        }
        public class Questionnaire
        {
        }
    }

    public class Test<T> where T : class, new()
    {
        public List<T> GetquInShow(string safesql)
        {
            List<T> list = new List<T>();
            using (SqlDataReader sdr = SqlHelper.ExecuteDataReader("", safesql))
            {
                PropertyInfo[] pi = typeof(T).GetProperties();
                while (sdr.Read())
                {
                    T model = new T();
                    foreach (var item in pi)
                    {
                        item.SetValue(model, sdr[item.Name], null);
                    }
                    list.Add(model);
                }
            }  
            return list;
        }  
    }
    这样应该可以   用泛型和反射
︿ 2
 private List<Questionnaire> GetquInShow(string safesql)
        {
            List<Questionnaire> list = new List<Questionnaire>();
            DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString, CommandType.Text, safesql);
            if (ds.Tables.Count > 0)
            {
                DataTable dt = ds.Tables[0];
                foreach (DataRow row in dt.Rows)
                {
                    Questionnaire qu = new Questionnaire();
                    qu.ID = (int)row["ID"];
                    qu.QUID = (int)row["QUID"];
                    qu.Province = (string)row["Province"];
                    qu.City = (string)row["City"];
                    qu.Street = (string)row["Street"];
                    qu.Phone = (string)row["Phone"];
                    qu.Date = (DateTime)row["Date"];
                    qu.Q1 = (string)row["Q1"];
                    qu.Q2 = (string)row["Q2"];
                    list.Add(qu);
                }
            }
            return list;
        }
        public List<Questionnaire> GetQuestionnaire()
        {
            string sql = "";
            sql = "select * from Questionnaire order by ID";
            return GetquInShow(sql);
        }