No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Ejercicio cl谩usula GroupBy

23/26

Aportes 43

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

隆Hola, Platzinauta! 馃弳馃檶馃徑

Para realizarlo haz un fork de este ejercicio en Replit, o copia el c贸digo en tu editor favorito.

Comparte el resultado en los comentarios

Excelente curso

class Program {
public static void Main (string[] args) {

List<Animal> animales = new List<Animal>();
animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

// Escribe tu c贸digo aqu铆
// Retorna los datos de la colleci贸n Animales agrupada por color 
IEnumerable<IGrouping<string,Animal>> animalesGroup = animales.GroupBy(p=> p.Color);

foreach(var grupo in animalesGroup){
    Console.WriteLine("");
    Console.WriteLine($"Grupo: {grupo.Key}");
    Console.WriteLine("{0,-60}{1,15}","Name","Color");
    foreach(var item in grupo){
        Console.WriteLine("{0,-60}{1,15}",item.Nombre,item.Color);
    }
}

}

public class Animal
{
public string Nombre {get;set;}
public string Color {get;set;}
}
}

```js // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color var resultado = animales.GroupBy(x => x.Color); foreach (var grupo in resultado) { Console.WriteLine(""); Console.WriteLine($"Color: {grupo.Key}"); foreach (var item in grupo) { Console.WriteLine(item.Nombre, item.Color); } } ``` // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color var resultado = animales.GroupBy(x => x.Color); foreach (var grupo in resultado) { Console.WriteLine(""); Console.WriteLine($"Color: {grupo.Key}"); foreach (var item in grupo) { Console.WriteLine(item.Nombre, item.Color); } }
```js var animalitos = animales.GroupBy(a => a.Color); foreach (var animal in animalitos) { Console.WriteLine($"\n color: {animal.Key}"); foreach (var animal1 in animal) { Console.WriteLine($"nombre: {animal1.Nombre}"); } } ```
var grupoAnimales = animales.GroupBy(p => p.Color); 聽 聽 foreach(var item in grupoAnimales) {聽 聽 聽 聽聽 聽 聽 聽 Console.WriteLine(item.Key); 聽 聽 聽 聽 Console.WriteLine("{0,-60} {1,10}", "Nombre", "Color"); 聽 聽 聽 聽 foreach(var subItem in item){聽 聽 聽 聽 聽 Console.WriteLine("{0,-60} {1,10}", subItem.Nombre, 聽subItem.Color);聽 聽 聽 聽 } 聽 聽 聽 聽 Console.WriteLine("\n");聽 聽 }
var grupoAnimales = animales.GroupBy(p => p.Color); foreach(var item in grupoAnimales) {聽 聽 聽 聽聽 聽 聽 聽 Console.WriteLine(item.Key); 聽Console.WriteLine("{0,-60} {1,10}", "Nombre", "Color"); 聽 foreach(var subItem in item){聽 聽 聽 聽 聽 Console.WriteLine("{0,-60} {1,10}", subItem.Nombre, 聽subItem.Color);聽 聽 聽 聽 } 聽 聽 聽 聽 Console.WriteLine("\n");聽 聽 }
```js using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main(string[] args) { List<Animal> animales = new List<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color var resultado = animales.GroupBy(animal => animal.Color); resultado.ToList().ForEach(animal => { Console.WriteLine(animal.Key); animal.ToList().ForEach(animal => Console.WriteLine($"\t {animal.Nombre}")); }); } public class Animal { public string Nombre { get; set; } public string Color { get; set; } } } ```
```c# IEnumerable<IGrouping<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); foreach (var grupo in animalesAgrupadosPorColor) { Console.WriteLine($"\nGrupo: {grupo.Key}"); foreach (var animal in grupo) { Console.WriteLine(animal.Nombre); } } ```聽IEnumerable\<IGrouping\<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); 聽 聽 foreach (var grupo in animalesAgrupadosPorColor)聽 聽 {聽 聽 聽 Console.WriteLine($"\nGrupo: {grupo.Key}");聽 聽 聽 foreach (var animal in grupo)聽 聽 聽 {聽 聽 聽 聽 Console.WriteLine(animal.Nombre);聽 聽 聽 }聽 聽 }
```txt IEnumerable<IGrouping<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); foreach (var grupo in animalesAgrupadosPorColor) { Console.WriteLine($"\nGrupo: {grupo.Key}"); foreach (var animal in grupo) { Console.WriteLine(animal.Nombre); } } ```聽IEnumerable\<IGrouping\<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); 聽 聽 foreach (var grupo in animalesAgrupadosPorColor)聽 聽 {聽 聽 聽 Console.WriteLine($"\nGrupo: {grupo.Key}");聽 聽 聽 foreach (var animal in grupo)聽 聽 聽 {聽 聽 聽 聽 Console.WriteLine(animal.Nombre);聽 聽 聽 }聽 聽 }
IEnumerable\<IGrouping\<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); 聽 聽 foreach (var grupo in animalesAgrupadosPorColor)聽 聽 {聽 聽 聽 Console.WriteLine($"\nGrupo: {grupo.Key}");聽 聽 聽 foreach (var animal in grupo)聽 聽 聽 {聽 聽 聽 聽 Console.WriteLine(animal.Nombre);聽 聽 聽 }聽 聽 }
```js IEnumerable<IGrouping<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); foreach (var grupo in animalesAgrupadosPorColor) { Console.WriteLine($"\nGrupo: {grupo.Key}"); foreach (var animal in grupo) { Console.WriteLine(animal.Nombre); } } ```聽IEnumerable\<IGrouping\<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); 聽 聽 foreach (var grupo in animalesAgrupadosPorColor)聽 聽 {聽 聽 聽 Console.WriteLine($"\nGrupo: {grupo.Key}");聽 聽 聽 foreach (var animal in grupo)聽 聽 聽 {聽 聽 聽 聽 Console.WriteLine(animal.Nombre);聽 聽 聽 }聽 聽 }
```c# IEnumerable<IGrouping<string, Animal>> animalesAgrupadosPorColor = animales.GroupBy(p => p.Color); foreach (var grupo in animalesAgrupadosPorColor) { Console.WriteLine($"\nGrupo: {grupo.Key}"); foreach (var animal in grupo) { Console.WriteLine(animal.Nombre); } } ```
```c# var animalesPorColor = animales.GroupBy(x => x.Color); ```

Hola, este es el c贸digo que agregu茅

// Escribe tu c贸digo aqu铆
// Retorna los datos de la colleci贸n Animales agrupada por color 
foreach(var group in animales.GroupBy(a => a.Color))
{
	Console.WriteLine($"\nGrupo de color {group.Key}");
        foreach(var item in group)
         {
		Console.WriteLine($"{item.Nombre} - {item.Color}");
          }
}
![](https://static.platzi.com/media/user_upload/image-ad3b299a-969c-451f-905a-09a65b865388.jpg)
```js using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main(string[] args) { List<Animal> animales = new List<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color IEnumerable<IGrouping<string,Animal>> listaAnimalesAgrupados = animales.GroupBy(p => p.Color); foreach (var grupo in listaAnimalesAgrupados ) { Console.WriteLine($"{grupo.Key}"); foreach (var item in grupo) { Console.WriteLine($"{item.Nombre}"); } Console.WriteLine(""); } } public class Animal { public string Nombre { get; set; } public string Color { get; set; } } } ```using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main(string\[] args) { List\<Animal> animales = new List\<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color IEnumerable\<IGrouping\<string,Animal>> listaAnimalesAgrupados = animales.GroupBy(p => p.Color); foreach (var grupo in listaAnimalesAgrupados ) { Console.WriteLine($"{grupo.Key}"); foreach (var item in grupo) { Console.WriteLine($"{item.Nombre}"); } Console.WriteLine(""); } } public class Animal { public string Nombre { get; set; } public string Color { get; set; } } }
![](https://static.platzi.com/media/user_upload/image-30cae0bd-17ce-43be-a150-6a8af1c91370.jpg)
```js using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main (string[] args) { List<Animal> animales = new List<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color var resultado = animales.GroupBy(animal => animal.Color); foreach (var item in resultado){ Console.WriteLine($"Color: {item.Key}"); foreach (var item2 in item) { Console.WriteLine(item2.Nombre, item2.Color); } } } public class Animal { public string Nombre {get;set;} public string Color {get;set;} } } ```
```c# IEnumerable<IGrouping<string,Animal>> resultado = animales.OrderBy( p => p.Color). GroupBy(p => p.Color); foreach ( IGrouping<string, Animal> animalItem in resultado) { //"etc." } ``` Aunque no es parte del ejercicio; Segun le铆 en algun lado, se recomiendo realizar primero un ordenamiento y luego si el proceso de agrupaci贸n, esto, con el fin de optimizar recursos; ya que, si se trata de una cantidad de datos masiva, se ve muy afectado si se realiza directamente el proceso de agrupamiento. Quedo atento a correcciones/opiniones .. Gracias.

Les comparto el resultado obtenido.

Yo los acomod茅 as铆: ```js IEnumerable<IGrouping<string, Animal>> collecionAnimales = animales.GroupBy(p => p.Color); foreach (var color in collecionAnimales) { Console.WriteLine($"Color: {color.Key}"); foreach (var animal in color) { Console.WriteLine("{0, -10}", animal.Nombre); } Console.WriteLine(new string('-', 10), '\b'); } ```IEnumerable\<IGrouping\<string, Animal>> collecionAnimales = animales.GroupBy(*p* => *p*.Color);聽 聽 聽 聽 foreach (var color in collecionAnimales)聽 聽 聽 聽 {聽 聽 聽 聽 聽 聽 Console.WriteLine($"Color: {color.Key}");聽 聽 聽 聽 聽 聽 foreach (var animal in color)聽 聽 聽 聽 聽 聽 {聽 聽 聽 聽 聽 聽 聽 聽 Console.WriteLine("{0, -10}", animal.Nombre);聽 聽 聽 聽 聽 聽 }聽 聽 聽 聽 聽 聽 Console.WriteLine(new string('-', 10), '\b');聽 聽 聽 聽 }
Comunidad, comparto mi solucion: ```c# using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main (string[] args) { List<Animal> animales = new List<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color IEnumerable<IGrouping<string, Animal>> resultado = animales.GroupBy(animal => animal.Color); foreach (var item in resultado) { Console.WriteLine(""); Console.WriteLine($"Color: {item.Key}"); foreach (Animal animal in item) { Console.WriteLine("{0,-10} {1, 9}", animal.Nombre, animal.Color); } } } public class Animal { public string Nombre {get;set;} public string Color {get;set;} } } ```using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main (string\[] args) { List\<Animal> animales = new List\<Animal>(); animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" }); animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" }); animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" }); animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" }); animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" }); // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color IEnumerable\<IGrouping\<string, Animal>> resultado = animales.GroupBy(animal => animal.Color); foreach (var item in resultado) { Console.WriteLine(""); Console.WriteLine($"Color: {item.Key}"); foreach (Animal animal in item) { Console.WriteLine("{0,-10} {1, 9}", animal.Nombre, animal.Color); } } } public class Animal { public string Nombre {get;set;} public string Color {get;set;} } }
```c# // Escribe tu c贸digo aqu铆 // Retorna los datos de la colleci贸n Animales agrupada por color var animalesAgrupados = animales.GroupBy(a => a.Color); foreach(var animal in animalesAgrupados) { Console.WriteLine($"\n*** {animal.Key} ***"); foreach(var item in animal) { Console.WriteLine(item.Nombre); } } ```
IEnumerable\<IGrouping\<string, Animal>> AnimalesPorColor = animales.GroupBy(p => p.Color); foreach(var group in AnimalesPorColor){ Console.WriteLine($"Grupo: {group.Key}"); foreach(var item in group){ Console.WriteLine(item.Nombre); } Console.WriteLine("\n");

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
  public static void Main (string[] args) {

    List<Animal> animales = new List<Animal>();
    animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
    animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

    // Escribe tu c贸digo aqu铆
    // Retorna los datos de la colleci贸n Animales agrupada por color 

     var AG = animales.GroupBy(prop => prop.Color);
     foreach(var group in AG){
     Console.WriteLine($"Grupo: {group.Key}");
     foreach(var animal in group)Console.WriteLine(animal.Nombre);
     Console.WriteLine("");
     }

  }

  public class Animal
  {
    public string Nombre {get;set;}
    public string Color {get;set;}
  }
}

Mi aporte

List<Animal> animales = new List<Animal>();
animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

IEnumerable<IGrouping<string, Animal>> animalesAgrupados = animales.GroupBy( animal => animal.Color );
foreach (var grupo in animalesAgrupados)
{
    Console.WriteLine("");
    Console.WriteLine($"Color: {grupo.Key}");
    Console.WriteLine("{0, -30} {1, 30}\n", "Nombre", "Color");
    foreach (var item in grupo)
    {
        Console.WriteLine("{0, -30} {1, 30}", item.Nombre, item.Color);
    }
}

public class Animal
{
    public string Nombre { get; set; }
    public string Color { get; set; }
}

imprimirGrupo(animales.GroupBy(p => p.Color));

void imprimirGrupo(IEnumerable<IGrouping<string, Animal>> ListaDeAnimales)
{
foreach (var grupo in ListaDeAnimales)
{
Console.WriteLine("");
Console.WriteLine($鈥淕rupo: {grupo.Key}鈥);
Console.WriteLine("{0,-10} {1, 15}", 鈥淣ombre鈥, 鈥淐olor鈥);

    foreach (var item in grupo)
    {
        Console.WriteLine("{0,-10} {1, 15}", item.Nombre, item.Color);
    }
}

}

Esta es mi versi贸n.

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
  public static void Main (string[] args) {

   List<Animal> animales = new List<Animal>();
    animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
    animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

    // Escribe tu c贸digo aqu铆
    // Retorna los datos de la colleci贸n Animales agrupada por color 
  new Agrupar().Imprimir(new Agrupar().OrdenadosXColor(animales));
  }

  public class Animal
  {
    public string Nombre {get;set;}
    public string Color {get;set;}
  }

  public class Agrupar{

    public IEnumerable<IGrouping<string, Animal>> OrdenadosXColor(List<Animal> animales){
      return animales.GroupBy(p => p.Color);
    }

    public void Imprimir(IEnumerable<IGrouping<string, Animal>> animales){
      foreach(var grupo in animales){
        Console.WriteLine($"Grupo: {grupo.Key}");
        Console.WriteLine("{0, -10} {1,7}" ,"Nombre","Color");
        foreach(var item in grupo){
            Console.WriteLine("{0, -10} {1,7}" , item.Nombre, item.Color);
        }
      }
    }
  }
}

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
public static void Main (string[] args) {

List<Animal> animales = new List<Animal>();
animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
animales.Add(new Animal() { Nombre = "Pantera", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

// Escribe tu c贸digo aqu铆
// Retorna los datos de la colecci贸n Animales agrupada por color
var GroupColorAnimals = animales.OrderBy(p=>p.Nombre).GroupBy(p=>p.Color);
foreach(var group in GroupColorAnimals)
  { 
    Console.WriteLine($"Group: {group.Key}");
    foreach(var item in group)
      {
        Console.WriteLine(item.Nombre);  
      }
    Console.WriteLine("");
  }
}

public class Animal
{
public string Nombre {get;set;}
public string Color {get;set;}
}
}

////As铆 qued贸 mi c贸digo
using System;
using System.Collections.Generic;
using System.Linq;

class Program {
  public static void Main (string[] args) {

    List<Animal> animales = new List<Animal>();
    animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
    animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

    // Escribe tu c贸digo aqu铆
    // Retorna los datos de la colleci贸n Animales agrupada por color 
    IEnumerable<IGrouping<string, Animal>>listaAnimalesAgrupados =animales.GroupBy(x=>x.Color);
    ImprimirGrupo(listaAnimalesAgrupados);
    void ImprimirGrupo(IEnumerable<IGrouping<string,Animal>> ListadeAnimales)
    {
        foreach(var grupo in ListadeAnimales)
        {
            Console.WriteLine("");
            Console.WriteLine($"Grupo: { grupo.Key }");
            Console.WriteLine("{0,-60} {1, 15}\n", "Nombre", "Color");
            foreach(var item in grupo)
            {
              Console.WriteLine("{0,-60} {1, 15}",item.Nombre,item.Color); 
            }
        }
    }

  }

  public class Animal
  {
    public string Nombre {get;set;}
    public string Color {get;set;}
  }
}

Mi soluci贸n con la impresi贸n en consola:

Para agrupar los animales:

List<IGrouping<string, Animal>> GroupAnimalsByColor ()
{
    return animals.GroupBy(animal => animal.Color).ToList();
}

Para Imprimirlos:

void PrintGroupString(IEnumerable<IGrouping<string, Animal>> booksList)
{
    foreach (var group in booksList)
    {
        Console.WriteLine("");
        Console.WriteLine($"Color: {group.Key}");
        Console.WriteLine("{0,-20}", "Name");
        foreach (var item in group)
        {
            Console.WriteLine("{0,-20}", item.Name);
        }
    }
}

Para llamar el m茅todo: PrintGroupString(GroupAnimalsByColor());

    // Escribe tu c贸digo aqu铆
    // Retorna los datos de la colleci贸n Animales agrupada por color 
    var colorAnimales = from a in animales group a by a.Color;
    
  foreach(var grupo in colorAnimales)
    {
      Console.WriteLine($"[QUERY] - {grupo.Key}");
      foreach(var animalito in grupo){
        Console.WriteLine($"{animalito.Nombre}");
      }
    }
  }

Mi soluci贸n fue:

1.Creo una variable tipo lista que contenga Animales y la agrupo por color
2.Imprimo un encabezado para cada grupo de Color
3.Hago que por cada grupo de Color empiece a imprimir en consola los animales correspondientes y su color

var ListaDeAnimales = animales.GroupBy(p => p.Color).ToList();

foreach (var grupo in ListaDeAnimales)
{
    Console.WriteLine("");
    Console.WriteLine($"Grupo: {grupo.Key}");
    Console.WriteLine("{0, -60} {1, 15}\n", "Nombre", "Color");
    foreach (var item in grupo)
    {
        Console.WriteLine("{0, -60} {1, 15}\n", item.Nombre, item.Color);
    }
}
	

Mi peque帽o aporte

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
  public static void Main (string[] args) {

    List<Animal> animales = new List<Animal>();
    animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
    animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
    animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
    animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
    animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

    // Escribe tu c贸digo aqu铆
    // Retorna los datos de la colleci贸n Animales agrupada por color 

    var animalesAgrupadosColor = animales.GroupBy( x => x.Color);

    foreach(var grupo in animalesAgrupadosColor){
      Console.WriteLine("");
      Console.WriteLine($"Grupo: {grupo.Key}");
      Console.WriteLine("{0, 15} {1, 15}\n", "Nombre", "Color");
        foreach(var item in grupo)
        {
            Console.WriteLine("{0, 15} {1, 15}",item.Nombre,item.Color); 
        }
    }

  }

  public class Animal
  {
    public string Nombre {get;set;}
    public string Color {get;set;}
  }
}

Esta es mi soluci贸n

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main(string[] args)
    {

        List<Animal> animales = new List<Animal>();
        animales.Add(new Animal() { Nombre = "Hormiga", Color = "Rojo" });
        animales.Add(new Animal() { Nombre = "Lobo", Color = "Gris" });
        animales.Add(new Animal() { Nombre = "Elefante", Color = "Gris" });
        animales.Add(new Animal() { Nombre = "Pantegra", Color = "Negro" });
        animales.Add(new Animal() { Nombre = "Gato", Color = "Negro" });
        animales.Add(new Animal() { Nombre = "Iguana", Color = "Verde" });
        animales.Add(new Animal() { Nombre = "Sapo", Color = "Verde" });
        animales.Add(new Animal() { Nombre = "Camaleon", Color = "Verde" });
        animales.Add(new Animal() { Nombre = "Gallina", Color = "Blanco" });

        // Escribe tu c贸digo aqu铆
        var groupAnimals = animales.GroupBy(p => p.Color);
        void PrintGroups(IEnumerable<IGrouping<string, Animal>> animals)
        {
            foreach (var group in animals)
            {
                Console.WriteLine($"\nGrupo: {group.Key}");
                foreach (var item in group)
                {
                    Console.WriteLine(item.Nombre);
                }
            }
        }
        PrintGroups(groupAnimals);


        // Retorna los datos de la colleci贸n Animales agrupada por color 

    }

    public class Animal
    {
        public string Nombre { get; set; }
        public string Color { get; set; }
    }
}

void ImprimirAnimalPorColor(IEnumerable<IGrouping<string, Animal>> ListaDeAnimales)
{
    foreach (var grupo in ListaDeAnimales)
    {
        Console.WriteLine($"Grupo: {grupo.Key}");
        foreach(var item in grupo) {
            Console.WriteLine($"Animal: {item.Nombre} | Color: {item.Color}");
        }
    }
}

var animalesAgrupadosPorColor = animales.GroupBy(p => p.Color);

ImprimirAnimalPorColor(animalesAgrupadosPorColor);
IEnumerable<IGrouping<string,Animal>> ColorAgrupado = animales.GroupBy(p=> p.Color);
    foreach(var grupo in ColorAgrupado)
    {
        Console.WriteLine("");
        Console.WriteLine($"Color: { grupo.Key}");
        //Console.WriteLine("{0,-60}\n", "Nombre");
        foreach(var item in grupo)
        {
            Console.WriteLine("{0,-60}", item.Nombre);
        }
    }

Mi solucion

Resultado

undefined