Sector 7G

Sector7G Live Search

About Me

About Me

Windows Live Messenger Presence Gadget

My Photo Albums

My Photo Web Albums

Logos

  • Sector7G
  • ilitia Technologies


Kartones.Net MVF Winner

Sintaxis LINQ: Group

En muchas ocasiones cuando se lanzan queries contra fuentes de datos es necesario que los resultados sean devueltos según un criterio determinada. Para realizar esta operación en LINQ se utiliza GroupBy, que cuenta con un alias Group. Las signaturas de este método son:

   1:  public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
   2:      this IEnumerable<TSource> source, 
   3:      Func<TSource, TKey> keySelector)
   4:   
   5:  public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
   6:      this IEnumerable<TSource> source, 
   7:      Func<TSource, TKey> keySelector, 
   8:      IEqualityComparer<TKey> comparer)
   9:   
  10:  public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
  11:      this IEnumerable<TSource> source, 
  12:      Func<TSource, TKey> keySelector, 
  13:      Func<TSource, TElement> elementSelector)
  14:   
  15:  public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
  16:      this IEnumerable<TSource> source, 
  17:      Func<TSource, TKey> keySelector, 
  18:      Func<TSource, TElement> elementSelector, 
  19:      IEqualityComparer<TKey> comparer)

Cómo se puede ver en los métodos todas las sobrecargas del método GroupBy devuelven una colección de IGrouping<TKey, TElement>, lo que facilita mucho el trabajo a la hora de recorrer los datos. Otro detalle importante es que tiene una sobrecarga que permite personalidad el modo en el que los datos serán comparados para su agrupación. Veamos un ejemplo y la sintaxis que se usa:

   1:  var list = from d in developers
   2:             group d by d.Language into p
   3:             select new { Language = p.Key, Developers = p };
   4:   
   5:  foreach (var languages in list)
   6:  {
   7:      Console.WriteLine(languages.Language);
   8:      foreach (var developer in languages.Developers)
   9:      {
  10:          Console.WriteLine(developer.Name);
  11:      }
  12:  }
  13:   
  14:  var list = developers.GroupBy(d => d.Language, d => d.Name);
  15:   
  16:  foreach (var languages in list)
  17:  {
  18:      Console.WriteLine(languages.Key);
  19:      foreach (var developer in languages)
  20:      {
  21:          Console.WriteLine(developer);
  22:      }
  23:  }

Nota: Para la realización de estos ejemplos se han utilizado una serie entidades y colecciones que podréis encontrar aquí.

Comments

Sector 7G said:

En LINQ las consultas pueden ser ejecutadas de dos formas diferentes. Mediante ejecuci&#243;n inmediata

# April 19, 2008 2:09 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: