public List<DiarioContabilidad> MapeoContabilidadXml(DataTable dt)
{
var contabilidadList = new List<DiarioContabilidad>();
var listaCabeceraPrimerCicloFor = new List<String>();
var cabeceraDelSegundoCicloFor = string.Empty;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == 0) // para la primera vez!!
{
listaCabeceraPrimerCicloFor.Add(Convert.ToString(dt.Rows[i]["Desc_Comprobante"]));
}
if (!listaCabeceraPrimerCicloFor.Contains(cabeceraDelSegundoCicloFor))
{
//para las demas veces!!!
listaCabeceraPrimerCicloFor.Add(Convert.ToString(dt.Rows[i]["Desc_Comprobante"]));
var cabecera = new DiarioContabilidad();
#region RELLENA CABECERA
if (IsStringNotNullEmpy(dt.Rows[i]["Num_lote"]))
cabecera.NroDiario = Convert.ToString(dt.Rows[i]["Num_lote"]);
if (IsStringNotNullEmpy(dt.Rows[i]["Nombre_lote"]))
cabecera.Nombre = Convert.ToString(dt.Rows[i]["Nombre_lote"]);
if (IsStringNotNullEmpy(dt.Rows[i]["Desc_Comprobante"]))
cabecera.DefContable = Convert.ToString(dt.Rows[i]["Desc_Comprobante"]);
#endregion
var listaDetalle = new List<Lineas>();
for (int x = 0; x < dt.Rows.Count; x++)
{
cabeceraDelSegundoCicloFor = Convert.ToString(dt.Rows[x]["Desc_Comprobante"]);
if (listaCabeceraPrimerCicloFor.Contains(cabeceraDelSegundoCicloFor))
{
var detalle = new Lineas();
#region RELLENA DETALLE
//solo si tiene la misma Desc_Comprobante (este es el campo agrupador en el SP) relleno el detalle.
if (cabecera.DefContable == Convert.ToString(dt.Rows[x]["Desc_Comprobante"]))
{
if (IsStringNotNullEmpy(dt.Rows[x]["Fecha_Comp"]))
detalle.Fecha = Convert.ToString(dt.Rows[x]["Fecha_Comp"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Num_Comp"]))
detalle.Asiento = Convert.ToString(dt.Rows[x]["Num_Comp"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Empresa"]))
detalle.Empresa = Convert.ToString(dt.Rows[x]["Empresa"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Tipo_Cuenta"]))
detalle.TipoCuenta = Convert.ToString(dt.Rows[x]["Tipo_Cuenta"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Cod_Cuenta_LS"]))
detalle.Cuenta = Convert.ToString(dt.Rows[x]["Cod_Cuenta_LS"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Glosa_Lin_Comp"]))
detalle.Descripcion = Convert.ToString(dt.Rows[x]["Glosa_Lin_Comp"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Dim_Finan1"]))
detalle.CentroCosto = Convert.ToString(dt.Rows[x]["Dim_Finan1"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Dim_Finan_Rut"]))
detalle.RutCliente = Convert.ToString(dt.Rows[x]["Dim_Finan_Rut"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Mto_debe_pesos"]))
detalle.Debito = Convert.ToString(dt.Rows[x]["Mto_debe_pesos"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Mto_Haber_pesos"]))
detalle.Credito = Convert.ToString(dt.Rows[x]["Mto_Haber_pesos"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Divisa"]))
detalle.Divisa = Convert.ToString(dt.Rows[x]["Divisa"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Tipo_Cambio"]))
detalle.TipoCambio = Convert.ToString(dt.Rows[x]["Tipo_Cambio"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Nro_Docto"]))
detalle.Documento = Convert.ToString(dt.Rows[x]["Nro_Docto"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Tipo_Tr_Bco"]))
detalle.TransBancaria = Convert.ToString(dt.Rows[x]["Tipo_Tr_Bco"]);
if (IsStringNotNullEmpy(dt.Rows[x]["Ref_Pago"]))
detalle.ReferenciaPago = Convert.ToString(dt.Rows[x]["Ref_Pago"]);
#endregion
listaDetalle.Add(detalle);
}
cabeceraDelSegundoCicloFor = Convert.ToString(dt.Rows[x]["Desc_Comprobante"]);
}
}
cabecera.Diario = listaDetalle;
/************************Fin Detalle******************************************/
if (i == 0)
{
contabilidadList.Add(cabecera);
}
else
{
if (contabilidadList.All(o => o.DefContable.Trim().ToLower() != cabecera.DefContable.Trim().ToLower()))
{
contabilidadList.Add(cabecera);
}
}
}
}
var count = contabilidadList.Count;
return contabilidadList;
}
Mostrando entradas con la etiqueta lista. Mostrar todas las entradas
Mostrando entradas con la etiqueta lista. Mostrar todas las entradas
lunes, 27 de enero de 2020
viernes, 5 de junio de 2015
C# - Convertir lista en DataTable
/// <summary>
///Convierte Lista en DataTable
/// </summary>
/// <param name="items">Lista a convertir de tipo object</param>
/// <param name="nameService">Nombre a dar al DataTable</param>
/// <returns></returns>
public static DataTable ConvertirListaToDataTable(List<object> items, string nameService)
{
// Instancia del objeto a devolver
var returnValue = new DataTable();
// Información del tipo de datos de los elementos del List
Type itemsType = items.First().GetType();
/*Se Recorren las propiedades para crear las columnas del datatable y
pregunta si el objeto tiene estrcutra.Si tiene entra.*/
if (itemsType.GetProperties().Any())
{
foreach (PropertyInfo prop in itemsType.GetProperties())
{
//Se Crea y agrega una columna por cada propiedad de la entidad
var column = new DataColumn(prop.Name);
var propType = Nullable.GetUnderlyingType(prop.PropertyType)
?? prop.PropertyType;
column.DataType = propType;
returnValue.Columns.Add(column);
}
int j;
/* Se recorre la colección para guardar los datos
en el DataTable*/
foreach (var item in items)
{
j = 0;
object[] newRow = new object[returnValue.Columns.Count];
/* Se vuelve a recorrer las propiedades de cada item para
obtener su valor y guardarlo en la fila de la tabla*/
foreach (PropertyInfo prop in itemsType.GetProperties())
{
newRow[j] = prop.GetValue(item, null);
j++;
}
returnValue.Rows.Add(newRow);
}
}
//si el objeto no tiene estructura, se arma una.
else
{
var newRow = new object[items.Count];
for (int i = 0; i < items.Count; i++)
{
var colName = nameService + i;
var column = new DataColumn(colName);
column.DataType = typeof(string);
returnValue.Columns.Add(column);
}
for (int i = 0; i < items.Count; i++)
{
newRow[i] = items[i].ToString();
}
returnValue.Rows.Add(newRow);
}
// devolución del DataTable
return returnValue;
}
///Convierte Lista en DataTable
/// </summary>
/// <param name="items">Lista a convertir de tipo object</param>
/// <param name="nameService">Nombre a dar al DataTable</param>
/// <returns></returns>
public static DataTable ConvertirListaToDataTable(List<object> items, string nameService)
{
// Instancia del objeto a devolver
var returnValue = new DataTable();
// Información del tipo de datos de los elementos del List
Type itemsType = items.First().GetType();
/*Se Recorren las propiedades para crear las columnas del datatable y
pregunta si el objeto tiene estrcutra.Si tiene entra.*/
if (itemsType.GetProperties().Any())
{
foreach (PropertyInfo prop in itemsType.GetProperties())
{
//Se Crea y agrega una columna por cada propiedad de la entidad
var column = new DataColumn(prop.Name);
var propType = Nullable.GetUnderlyingType(prop.PropertyType)
?? prop.PropertyType;
column.DataType = propType;
returnValue.Columns.Add(column);
}
int j;
/* Se recorre la colección para guardar los datos
en el DataTable*/
foreach (var item in items)
{
j = 0;
object[] newRow = new object[returnValue.Columns.Count];
/* Se vuelve a recorrer las propiedades de cada item para
obtener su valor y guardarlo en la fila de la tabla*/
foreach (PropertyInfo prop in itemsType.GetProperties())
{
newRow[j] = prop.GetValue(item, null);
j++;
}
returnValue.Rows.Add(newRow);
}
}
//si el objeto no tiene estructura, se arma una.
else
{
var newRow = new object[items.Count];
for (int i = 0; i < items.Count; i++)
{
var colName = nameService + i;
var column = new DataColumn(colName);
column.DataType = typeof(string);
returnValue.Columns.Add(column);
}
for (int i = 0; i < items.Count; i++)
{
newRow[i] = items[i].ToString();
}
returnValue.Rows.Add(newRow);
}
// devolución del DataTable
return returnValue;
}
Suscribirse a:
Entradas (Atom)