Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

domingo, 15 de mayo de 2022

¿Cómo pasar un List<> (lista genérica) a un DataTable?

 Me tope con la necesidad de pasar una lista ó IEnumerable a un DataTable



public static DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
        {
            DataTable dtReturn = new DataTable();
            PropertyInfo[] oProps = null;

            if (varlist == null) return dtReturn;
            foreach (T rec in varlist)
            {
                if (oProps == null)
                {
                    oProps = ((Type)rec.GetType()).GetProperties();
                    foreach (PropertyInfo pi in oProps)
                    {
                        Type colType = pi.PropertyType;
                        if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                        {
                            colType = colType.GetGenericArguments()[0];
                        }
                        dtReturn.Columns.Add(new
                        DataColumn(pi.Name, colType));
                    }
                }
                DataRow dr = dtReturn.NewRow();
                foreach (PropertyInfo pi in oProps)
                {
                    dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
                }
                dtReturn.Rows.Add(dr);
            }
            return dtReturn;
        }

lunes, 15 de febrero de 2021

LINQ Group By y select collection c#

Objeto 


 items.GroupBy(item => item.Order.Customer)

     .Select(group => new { Customer = group.Key, Items = group.ToList() })
     .ToList();

Lista de enteros:

  List<int> solicitudes = partidasPAD.PartidaPAD.GroupBy(x => x.idSolicitud).Select(grupo => grupo.Key).ToList();

domingo, 11 de octubre de 2020

Convertir DataReader a DataTable C# (SqlDataReader to DataTable)

 Puede cargar un archivo DataTabledirectamente desde un lector de datos utilizando el Load()método que acepta un archivo IDataReader.

var dataReader = cmd.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);
o
  var dataTable = new System.Data.DataTable();
   var dt = new System.Data.DataTable();
  SqlDataReader dr;
  dr = cmd.ExecuteReader();
 if (dr.Read())
                    {
                        dataTable.Load(dr);
                        dt = dataTable;
                    }



sábado, 12 de septiembre de 2020

jueves, 20 de agosto de 2020

Entity framework code-first null clave externa

 

public class User
{
    public int Id { get; set; }
    public int? CountryId { get; set; }
    public virtual Country Country { get; set; }
}

jueves, 12 de marzo de 2020

Problema al llamar a Get Method of a Rest API en la web en mi código Xamarin.Forms

 System.NullReferenceException: Object reference not set to an instance of an object.


Estoy tratando de consumir un método Get de un WebAPI aleatorio en la Web a través de mi Xamarin.Formscódigo. Pero no puedo llamar a esa API.

Codigo Inicial


  private HttpClient httpClient;  

  public async Task<List<User>> GetUsersGroup(string group)

        {          
            List<User> users1 = new List<User>();

            var url = $"{Config.RoomsEndPoint}/{group}";
            var result = await httpClient.GetStringAsync(url);
            users1 = JsonConvert.DeserializeObject<List<User>>(result);
            return users1;


        }

Solucion


private HttpClient httpClient; 

public async Task<List<User>> GetUsersGroup(string group)
        {
            if (httpClient == null)
            {
                httpClient = new HttpClient();
            }
            List<User> users1 = new List<User>();

            var url = $"{Config.RoomsEndPoint}/{group}";
            var result = await httpClient.GetStringAsync(url);
            users1 = JsonConvert.DeserializeObject<List<User>>(result);
            return users1;


        }

lunes, 9 de marzo de 2020

Error: unexpected element found in XAMARIN

De repente recibo este error de compilación en VS 2019 pero no en VS 2017 cuando construyo mi proyecto de Android:
unexpected element <receiver> found in <manifest>
Solución:

entrar a las opciones del proyecto android y marcar la propiedad Use Incremental Android packaging system (aapt2)



Despues compilar
volver a entrar a esa opcion y desmarcar.




Compilar, y ya no debe marcar ese error.

jueves, 28 de noviembre de 2019

Exportar Lista Objeto a Excel C#



public void ExportToExcel<T>(List<T> list)
    {
        int columnCount = 0;
        DateTime StartTime = DateTime.Now;
        StringBuilder rowData = new StringBuilder();
        PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        rowData.Append("<Row ss:StyleID=\"s62\">");
        foreach (PropertyInfo p in properties)
        {
            if (p.PropertyType.Name != "EntityCollection`1" && p.PropertyType.Name != "EntityReference`1" && p.PropertyType.Name != p.Name)
            {
                columnCount++;
                rowData.Append("<Cell><Data ss:Type=\"String\">" + p.Name + "</Data></Cell>");
            }
            else
                break;
        }
        rowData.Append("</Row>");
        foreach (T item in list)
        {
            rowData.Append("<Row>");
            for (int x = 0; x < columnCount; x++) //each (PropertyInfo p in properties)
            {
                object o = properties[x].GetValue(item, null);
                string value = o == null ? "" : o.ToString();
                rowData.Append("<Cell><Data ss:Type=\"String\">" + value + "</Data></Cell>");
            }
            rowData.Append("</Row>");
        }
        var sheet = @"<?xml version=""1.0""?>
<?mso-application progid=""Excel.Sheet""?>
<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet""
xmlns:o=""urn:schemas-microsoft-com:office:office""
xmlns:x=""urn:schemas-microsoft-com:office:excel""
xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet""
xmlns:html=""http://www.w3.org/TR/REC-html40"">
<DocumentProperties xmlns=""urn:schemas-microsoft-com:office:office"">
<Author>MSADMIN</Author>
<LastAuthor>MSADMIN</LastAuthor>
<Created>2011-07-12T23:40:11Z</Created>
<Company>Microsoft</Company>
<Version>12.00</Version>
</DocumentProperties>
<ExcelWorkbook xmlns=""urn:schemas-microsoft-com:office:excel"">
<WindowHeight>6600</WindowHeight>
<WindowWidth>12255</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>60</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID=""Default"" ss:Name=""Normal"">
<Alignment ss:Vertical=""Bottom""/>
<Borders/>
<Font ss:FontName=""Calibri"" x:Family=""Swiss"" ss:Size=""11"" ss:Color=""#000000""/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID=""s62"">
<Font ss:FontName=""Calibri"" x:Family=""Swiss"" ss:Size=""11"" ss:Color=""#000000""
ss:Bold=""1""/>
</Style>
</Styles>
<Worksheet ss:Name=""Sheet1"">
<Table ss:ExpandedColumnCount=""" + (properties.Count() + 1) + @""" ss:ExpandedRowCount=""" + (list.Count() + 1) + @""" x:FullColumns=""1""
x:FullRows=""1"" ss:DefaultRowHeight=""15"">
" + rowData.ToString() + @"
</Table>
<WorksheetOptions xmlns=""urn:schemas-microsoft-com:office:excel"">
<PageSetup>
<Header x:Margin=""0.3""/>
<Footer x:Margin=""0.3""/>
<PageMargins x:Bottom=""0.75"" x:Left=""0.7"" x:Right=""0.7"" x:Top=""0.75""/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<HorizontalResolution>300</HorizontalResolution>
<VerticalResolution>300</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveCol>2</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name=""Sheet2"">
<Table ss:ExpandedColumnCount=""1"" ss:ExpandedRowCount=""1"" x:FullColumns=""1""
x:FullRows=""1"" ss:DefaultRowHeight=""15"">
</Table>
<WorksheetOptions xmlns=""urn:schemas-microsoft-com:office:excel"">
<PageSetup>
<Header x:Margin=""0.3""/>
<Footer x:Margin=""0.3""/>
<PageMargins x:Bottom=""0.75"" x:Left=""0.7"" x:Right=""0.7"" x:Top=""0.75""/>
</PageSetup>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name=""Sheet3"">
<Table ss:ExpandedColumnCount=""1"" ss:ExpandedRowCount=""1"" x:FullColumns=""1""
x:FullRows=""1"" ss:DefaultRowHeight=""15"">
</Table>
<WorksheetOptions xmlns=""urn:schemas-microsoft-com:office:excel"">
<PageSetup>
<Header x:Margin=""0.3""/>
<Footer x:Margin=""0.3""/>
<PageMargins x:Bottom=""0.75"" x:Left=""0.7"" x:Right=""0.7"" x:Top=""0.75""/>
</PageSetup>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>";
        System.Diagnostics.Debug.Print(StartTime.ToString() + " - " + DateTime.Now);
        System.Diagnostics.Debug.Print((DateTime.Now - StartTime).ToString());
        string attachment = "attachment; filename=Report.xml";
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.AddHeader("content-disposition", attachment);
        HttpContext.Current.Response.Write(sheet);
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.End();
    }




USO DEL METODO:

  ExportToExcel(TuLista);