
I have the data from the image.
I have a method to build a list with its children the key field is CardCode, I have this code but I use the cantidad field or in English quantity to determine the number of children that the CarddCode field contains that I do in the sql query, I wanted to know if There is another way to add the children to each element in the list if it did not have the quantity field.
public List<Cliente> ListadoClientes()
{
List<Cliente> ListaClientes = new List<Cliente>();
using (SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["cn"].ToString()))
{
int numero = 1;
SqlCommand cmd = new SqlCommand("USP_GET_DOCUMENTS_AND_ADDRESS", cn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Cliente cliente = new Cliente();
cliente.CardCode = Convert.ToString(reader["CardCode"]);
cliente.CardName = Convert.ToString(reader["CardName"]);
cliente.CardType = Convert.ToString(reader["CardFName"]);
cliente.GroupCode = Convert.ToString(reader["GroupCode"]);
cliente.FederalTaxID = Convert.ToString(reader["FederalTaxID"]);
cliente.Phone1 = Convert.ToString(reader["Phone1"]);
cliente.EmailAddress = Convert.ToString(reader["MailAddres"]);
cliente.Currency = Convert.ToString(reader["MailAddres"]);
cliente.U_MSSL_BTP = Convert.ToString(reader["U_MSSL_BTP"]);
cliente.U_MSSL_BTD = Convert.ToString(reader["U_MSSL_BTD"]);
cliente.U_MSSL_BAP = Convert.ToString(reader["U_MSSL_BAP"]);
int cantidad = Convert.ToInt32(reader["cantidad"]);
cliente.BPAddressesSingle = new EBPAddresses();
cliente.BPAddressesSingle.AddressType = Convert.ToString(reader["AddrType"]);
cliente.BPAddressesSingle.AddressName = Convert.ToString(reader["Address"]);
cliente.BPAddressesSingle.Street = Convert.ToString(reader["Street"]);
cliente.BPAddressesSingle.Country = Convert.ToString(reader["Country"]);
cliente.BPAddressesSingle.State = Convert.ToString(reader["State"]);
cliente.BPAddressesSingle.County = Convert.ToString(reader["County"]);
cliente.BPAddressesSingle.City = Convert.ToString(reader["City"]);
cliente.BPAddressesSingle.State = Convert.ToString(reader["ZipCode"]);
if (numero == cantidad)
{
cliente.BPAddresses.Add(cliente.BPAddressesSingle);
ListaClientes.AddUnique(cliente);
cliente = new Cliente();
numero = 1;
}
else
{
cliente.BPAddresses.Add(cliente.BPAddressesSingle);
numero = numero + 1;
}
cliente.BPAddressesSingle = new EBPAddresses();
cliente.BPAddressesSingle.AddressType = Convert.ToString(reader["AddrType"]);
cliente.BPAddressesSingle.AddressName = Convert.ToString(reader["Address"]);
cliente.BPAddressesSingle.Street = Convert.ToString(reader["Street"]);
cliente.BPAddressesSingle.Country = Convert.ToString(reader["Country"]);
cliente.BPAddressesSingle.State = Convert.ToString(reader["State"]);
cliente.BPAddressesSingle.County = Convert.ToString(reader["County"]);
cliente.BPAddressesSingle.City = Convert.ToString(reader["City"]);
cliente.BPAddressesSingle.State = Convert.ToString(reader["ZipCode"]);
cliente.BPAddresses.Add(cliente.BPAddressesSingle);
ListaClientes.AddUnique(cliente);
}
}
}
return ListaClientes;
}