首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

嘱托的参数传递

2013-09-28 
委托的参数传递public static ListT GetDataListT(String sql, FuncIDataReader, T build){using (S

委托的参数传递


public static List<T> GetDataList<T>(String sql, Func<IDataReader, T> build)
    {
        using (SqlConnection conn = GetSqlConnection())
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = sql;
            conn.Open();
            List<T> list = new List<T>();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    T t = build(reader);
                    if (t==null) continue;
                    list.Add(t);
                }
                return list;
            }
        }
    }

这个是SqlHelper类的方法,需要传入一个Func<IDataReader, T> build参数,不清楚怎么去传递。

protected void Init_PeopleChoice()
    {
        String sql = "Select Id,username From nodemanager where "+
          "isinfo=1 order by id desc";
        Id_UserName t = new Id_UserName();
        List<ListItem> list = SqlHelper.GetDataList(sql, Func < IDataReader, Id_UserName > builder);
    }
    protected Id_UserName builder(SqlDataReader reader)
    {
        Id_UserName t = new Id_UserName();
        t.id = reader.GetString(0).Trim().ToString();
        t.username = reader.GetString(1).Trim().ToString();
        return t;
    }
    class Id_UserName
    {
        public String id { get; set; }
        public String username { get; set; }
    }


上面是调用,不知道SqlHelper.GetDataList(sql, Func < IDataReader, Id_UserName > builder);
这句话应该怎么写,求指导。。。。 委托
[解决办法]
你可以写一个简化的方法

        public static List<T> GetDataList<T>(string sql) where T : new()
        {
            return GetDataList(sql, r => new T());
        }

[解决办法]
比如:
List<User> users = GetDataList("select * from users", x => new User() { Name = x["name"], Age = x["age"], ... });

热点排行