【发布时间】:2016-06-29 18:35:21
【问题描述】:
我有一个数据库有两个表如下,请忽略数据但格式如下
现在我有一个如下构造的模型类
public class FamilyModel
{
public string Name { get; set; }
public List<FamilyModel> FamilyList { get; set; }
public FamilyModel()
{
FamilyList = new List<FamilyModel>();
}
}
现在我只想从两个表中获取数据并填充列表。
所以我有一个存储过程,返回数据如下
所以我写了一些代码来填充上面的类。但它不起作用。我调试时数为 5。我希望计数为 2,扩展时我想要 FamilyA ->{Nick, Tom, Pam}.. FamilyB->{Harry} 等。请帮助修复此代码。
public static FamilyModel familyData()
{
//FamilyModel fml = new FamilyModel();
//fml.FamilyList = new List<FamilyModel>();
using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=|DataDirectory|\Families.mdf; Integrated Security=True; Connect Timeout=30;"))
{
con.Open();
SqlCommand cmd = new SqlCommand("sp_GetFamilies", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
FamilyModel fm = new FamilyModel();
fm.Name = dr["FamilyName"].ToString();
foreach (var item in dr["ChildName"].ToString())
{
if (Convert.ToInt32(dr["id"]) == Convert.ToInt32(dr["FID"]))
{
fm.FamilyList.Add(new FamilyModel() { Name = dr["ChildName"].ToString() });
}
}
}
return fm;
}
}
【问题讨论】:
-
List<FamilyModel>应该是List<Person>而不是。
标签: c# stored-procedures sqldatareader