I have a database that has two tables as follows, Please ignore the data but the format looks as follows
Now I have a Model class that is constructed as follows
public class FamilyModel
    {
        public string Name { get; set; }
        public List<FamilyModel> FamilyList { get; set; }
        public FamilyModel()
        {
            FamilyList = new List<FamilyModel>();
        }
}
Now all I want is to get data from the two tables and populate the list.
So I have a stored procedure that returns data as follows
So I have written some code to populate the above class. But it dosent work. I get a count of 5 when I debug. I want the count to be 2 and when expanded I want something like FamilyA ->{Nick, Tom, Pam}.. FamilyB->{Harry} and so on. Please help fixing this code.
    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;
                }
    }

