none
contar filas de un datatable con LINQ RRS feed

  • Pregunta

  • Hola, tengo un datatable con 2 campos, "Nombre" y "Tipo".

    Necesito hacer un select count de todas las filas donde el campo "Tipo" sea igual a "Antiguo" por ejemplo, para saber cuantos registros hay en el datatable de ese Tipo. Me podrían dar una mano para hacer eso con LINQ? No domino mucho el tema.

    Gracias de antemano

    jueves, 21 de junio de 2018 14:27

Respuestas

  • Buenas

    La la verdad es que es bastante facil:

    class Program
    {
      static void Main()
      {
        //Genero y relleno el datatable
        Random rand = new Random();
        DataTable dt = new DataTable();
        dt.Columns.Add("Nombre");
        dt.Columns.Add("Tipo");
        for (int i = 0; i < 100; i++)
        {
          DataRow dr = dt.NewRow();
          dr[0] = $"Nombre{i}";
          dr[1] = rand.Next(50) % 4 == 0 ? "Antiguo" : "Nuevo";
          dt.Rows.Add(dr);
        }
    
        //Obtengo los que sean antigos con LinQ
        var res = dt.Rows.Cast<DataRow>().Where(x => x["Tipo"].ToString() == "Antiguo");
    
        //Las cuento directamente 
        int Count = dt.Rows.Cast<DataRow>().Count(x => x["Tipo"].ToString() == "Antiguo");
        Console.Read();
      }
    }

    Lo que si tienes que tener en cuenta, es que DataTable.Rows es de tipo DataRowCollection, por lo tanto, para poder hacer la comprobación, tienes que castearlo a DataRow previamente.

    Si tienes dudas nos comentas


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 21 de junio de 2018 15:30