<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Panchi</title>
    <description>The latest articles on Forem by Panchi (@devpanch).</description>
    <link>https://forem.com/devpanch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1251874%2F42c61cbd-5782-4a84-b7dc-aea7792df49b.jpeg</url>
      <title>Forem: Panchi</title>
      <link>https://forem.com/devpanch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devpanch"/>
    <language>en</language>
    <item>
      <title>Agrupamiento de datos de una lista usando LINQ en C#</title>
      <dc:creator>Panchi</dc:creator>
      <pubDate>Fri, 13 Dec 2024 03:53:40 +0000</pubDate>
      <link>https://forem.com/devpanch/agrupamiento-de-datos-de-una-lista-usando-linq-en-c-4jii</link>
      <guid>https://forem.com/devpanch/agrupamiento-de-datos-de-una-lista-usando-linq-en-c-4jii</guid>
      <description>&lt;p&gt;Un ejemplo de una consulta LINQ en C# que realiza un agrupamiento de datos de una lista (&lt;code&gt;list&lt;/code&gt;) basada en el atributo &lt;code&gt;Id&lt;/code&gt;de los objetos, y luego organiza los datos agrupados en un nuevo formato.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Person
{
    public int Id { get; set; }
    public string? Car { get; set; }
}

static void Main(string[] args)
{
    List&amp;lt;Person&amp;gt; list = [
        new () { Id = 1, Car = "Toyota" },
        new () { Id = 1, Car = "Honda" },
        new () { Id = 2, Car = "Ford" },
        new () { Id = 2, Car = "Chevrolet" },
        new () { Id = 1, Car = "Mazda" },
        new () {Id = 3,Car="Corvete"},
        ];

    var result = (
        from p in list
            group p.Car by p.Id into g
            select new
            {
                PersonId=g.Key,
                Cars=g.OrderBy(car=&amp;gt;car).ToList()
            }
        );

    foreach ( var p in result)
    {
        Console.WriteLine($"PersonId: {p.PersonId}");
        Console.WriteLine($"Cars");
        foreach (var item in p.Cars)
        {
            Console.WriteLine($"- {item}");
        }

        Console.WriteLine();
    }

    Console.WriteLine();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Definir la clase con las propiedades correspondientes. Ejemplo: &lt;code&gt;**public class Person {}**&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Definir en una lista cada una de las propiedades asociadas a la clase antes definida agregando sus respectivos datos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agrupa los valores de la propiedad &lt;code&gt;Car&lt;/code&gt;de cada objeto por su correspondiente &lt;code&gt;Id&lt;/code&gt;. Usando &lt;strong&gt;&lt;em&gt;group by&lt;/em&gt;&lt;/strong&gt; de &lt;strong&gt;LINQ&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Dentro de cada grupo, organiza los elementos de Car en un orden específico.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Uso de &lt;strong&gt;select new&lt;/strong&gt;, para crear una nueva lista de objetos con las siguientes propiedades:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PersonId&lt;/strong&gt;: La clave del grupo (&lt;code&gt;Id&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cars&lt;/strong&gt;: Los valores agrupados de &lt;code&gt;Car&lt;/code&gt;, ordenados alfabéticamente o numéricamente (según el tipo de &lt;code&gt;Car&lt;/code&gt;), convertidos en una lista.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ejecución&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee22gra09v7sqrn8covr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee22gra09v7sqrn8covr.png" alt="Image description" width="201" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aspnet</category>
      <category>csharp</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>ORDENAMIENTO POR SELECCION CON C#</title>
      <dc:creator>Panchi</dc:creator>
      <pubDate>Mon, 05 Feb 2024 04:32:01 +0000</pubDate>
      <link>https://forem.com/devpanch/ordenamiento-por-seleccion-con-c-39p0</link>
      <guid>https://forem.com/devpanch/ordenamiento-por-seleccion-con-c-39p0</guid>
      <description>&lt;p&gt;El algoritmo de ordenamiento por selección requiere de operaciones para ordenar una lista de x números. Siguiendo lo siguientes parámetros:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Buscas el elemento más pequeño de la lista.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lo intercambias con el elemento ubicado en la primera posición de la lista.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Buscas el segundo elemento más pequeño de la lista.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lo intercambias con el elemento que ocupa la segunda posición en la lista.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Repites este proceso hasta que hayas ordenado toda la lista.&lt;/em&gt;
&lt;strong&gt;NOTA&lt;/strong&gt;: Al final de los pasos encontraras el código completo. 😉&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PASO 1.&lt;/strong&gt; Creación de lista a ordenar&lt;br&gt;
&lt;code&gt;//  Definir lista con valores a ordenar.&lt;br&gt;
int [] selection = new int[]{ 2, 4, 23, 8, 5, 9, 4, 6, 1 };&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PASO 2.&lt;/strong&gt; Definición de variables para almacenar procesos&lt;br&gt;
&lt;code&gt;//  DEFINICION DE VARIABLES QUE SE USARAN PARA ALMACENAR PROCESOS&lt;br&gt;
int aux, minimo;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PASO 3.&lt;/strong&gt; Imprimir lista&lt;br&gt;
&lt;code&gt;//  LISTA ORIGINAL&lt;br&gt;
Console.WriteLine("LISTA ORIGINAL");&lt;br&gt;
for (int i = 0; i &amp;lt; selection.Length; i++)&lt;br&gt;
{&lt;br&gt;
    Console.Write(selection[i]+" ");&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PASO 4.&lt;/strong&gt; Proceso para ordenamiento por selección&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (int i = 0; i &amp;lt; selection.Length; i++)
{
    min = i;  //  min se iguala a la posición de i.

    //  BUSCA EL VALOR MAS PEQUEÑO
    for (int j = i+1; j &amp;lt; selection.Length; j++)  //  i+1 -&amp;gt; SUMA MAS UNO A LA POSICION DEL VECTOR
    {
        //  VALIDAR EL VALOR MENOR
        if (selection[j] &amp;lt; selection[min]) //  VALIDA LOS VALORES EN LAS POSICIONES DEL VECTOR
        {
            min = j;        //  min SE IGUALA A LA POSICION DE j
        }
    }
    //  INTERCAMBIANDO VALORES
    aux = selection[i];
    selection[i] = selection[min];
    selection[min] = aux;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PASO 5.&lt;/strong&gt; Impresión de datos ordenados&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//  IMPRESION DE DATOS ORDENADOS
Console.WriteLine("\nDATOS ORDENADOS");
for (int i = 0; i &amp;lt; selection.Length; i++)
{
    Console.Write(selection[i]+" ");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;EJECUCION:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcnzuqneqhdg48drnrcf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcnzuqneqhdg48drnrcf.png" alt="Image description" width="436" height="123"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Código&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using System.Diagnostics;

Stopwatch timeMeasure = new Stopwatch();

int[] secuencial = new int[] { 2, 4, 23, 8, 5, 9, 4, 6, 1 };

int aux, min;

Console.WriteLine("LISTA ORIGINAL");
for (int i = 0; i &amp;lt; secuencial.Length; i++)
{
    Console.Write(secuencial[i]+" ");
}

timeMeasure.Start();
for (int i = 0; i &amp;lt; secuencial.Length; i++)
{
    min = i;

    //  INTERCAMBIAR VALORES MEDIANTE POSICIONES
    for (int j = i+1; j &amp;lt; secuencial.Length; j++)
    {
        //  VALIDAR DATOS MENORES

        if (secuencial[j] &amp;lt; secuencial[min])
        {
            min = j;
        }
    }
    //  INTERCAMBIANDO VALORES
    aux = secuencial[i];
    secuencial[i] = secuencial[min];
    secuencial[min] = aux;

}


//  IMPRESION DE DATOS ORDENADOS
Console.WriteLine("\nDATOS ORDENADOS");
for (int i = 0; i &amp;lt; secuencial.Length; i++)
{
    Console.Write(secuencial[i]+" ");
}

timeMeasure.Stop();
Console.WriteLine($"\nTiempo de ejecucion: {timeMeasure.Elapsed.TotalMilliseconds} ms");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>csharp</category>
      <category>programming</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
