public List<Model.ToDo> GetList(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ToDoList ");
if (strWhere.Trim() != "")
{
strSql.Append(" WHERE " + strWhere);
}
strSql.Append(" ORDER BY ID DESC ");
List<Model.ToDo> models = new List<Model.ToDo>();
using (SqlDataReader dr = SQLHelper.ExecuteReader(Util.Conn, strSql.ToString()))
{
while (dr.Read())
{
models.Add(GetModel(dr));
}
}
return models;
}
这个是单表,单model,如果sql语句改成
strSql.Append("SELECT * FROM ToDoList ");
strSql.Append("JOIN Customer ON Customer.ID=ToDoList.CustomerID ");
链接了另外一个表,这种情况怎么用泛型实现?
其实你在设计Model.ToDo时候就应该将Model.ToDo中包含对于Customer引用,可以作为属性提供,那么你在这里就可以一次完成,实际上属于建模问题
这种问题我一般使用一些额外的属性,比如有一个Acticle的model , 往往文章作者可能只存了一个AuthorId, 那么我除了在Acticle里面包含 文章表的所有字段外还会再加一个AuthorName的属性, 这样通过联表查询后只需要给该字段赋值就可以取得作者的名字, 还有一个办法就是建一个视图,绑定这个视图的泛型List 也可以解决问题, 另外可以考虑楼上的做法,包含一个对其它model的引用, 可以使用 aticle.author.AuthorName来访问或者aticle.tags(这里tags是List<Tag>)
随便说一句,象这种没几个string连接的就不要用StringBuiler了,直接连接即可,StringBuilder初始化也是要时间的.