Pregunta

estoy haciendo todo lo posible para aprender LINQ pero todavía me cuesta codificarlo. Como este, supongamos que tengo un conjunto de datos o una lista y los nombres o campos del objeto de la colección son los nombres de columna.

  

Id | Fecha | Lun | Mart | Mié | Jue   | Vie | Sáb | Dom | Cuenta

     

1 | 01/05 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 0 = | = 0 == | == 5 & Lt; - (1)

     

2 | 02/02 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 0 = | = 0 == | == 5 ** | - (2)

     

3 | 03/02 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 0 = | = 0 == | == 5 ** | - (2)

     

4 | 04/06 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 1 = | = 1 == | == 7 & Lt; - (1)

     

5 | 05/04 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 1 = | = 1 == | == 7 ** | - (3)

     

6 | 06/01 | = 1 = | == 1 == | == 1 = | == 1 = |   1 = | = 1 = | = 1 == | == 7 ** | - (3)

     

7 | 07/06 | = 1 = | == 1 == | == 1 = | == 1 = |   0 = | = 0 = | = 0 == | == 4 & Lt; ---- (1)

     

8 | 08/03 | = 1 = | == 1 == | == 1 = | == 1 = |   0 = | = 0 = | = 0 == | == 4 ** | - (4)

     

9 | 09/07 | = 1 = | == 1 == | == 1 = | == 1 = |   0 = | = 0 = | = 0 == | == 4 ** | - (4)

     

10 | 10/05 | 1 = | == 1 == | == 1 = | == 1 = |   0 = | = 0 = | = 0 == | == 4 ** | - (4)

Todo lo que quiero es primero obtener todos los números (1) y luego los (2) porque pertenecen al primero (1). Luego el grupo de (3) porque pertenecen al segundo (1). Último el grupo de (4) porque pertenecen al último (1).

por favor ayuda.

- pregunta reformulada. 1. ¿Cómo puedo obtener el primer grupo de 5, luego el grupo de 7 y el último grupo de 4?

¿Fue útil?

Solución

Parece que desea ordenar por conteo.

Cuando dices " obtén el primer grupo de 5 " ¿Qué quieres decir? ¿Qué datos quieres obtener?

ACTUALIZACIÓN después de la aclaración

Asumiendo

public class Row
{
    public int ID{get;set;}
    public string Date{get;set;}
    public int Count{get;set;}
}

Row r1 = new Row{ID=1, Date="01/01/01", Count=5};
Row r2 = new Row{ID=2, Date="01/02/01", Count=5};
Row r3 = new Row{ID=3, Date="01/03/01", Count=5};
Row r4 = new Row{ID=4, Date="01/04/01", Count=7};
Row r5 = new Row{ID=5, Date="01/05/01", Count=7};
Row r6 = new Row{ID=6, Date="01/06/01", Count=7};
Row r7 = new Row{ID=7, Date="01/07/01", Count=4};
Row r8 = new Row{ID=8, Date="01/08/01", Count=4};
Row r9 = new Row{ID=9, Date="01/09/01", Count=4};
Row r10 = new Row{ID=10, Date="01/01/01", Count=4};

List<Row> rows = new List<Row>{r1,r2,r3,r4,r5,r6,r7,r8,r9,r10};

Entonces

// We will assign results of our query to this variable
var result = 

// rows is a generic list of Row objects
rows                  

   // This splits the list into seperate categories organised by Count
   // After the GroupBy, we have an IEnumerable<IGrouping<Int32, Row>> - that is, a collection of collections of items sharing a common key (in this case Count)
   .GroupBy(r=>r.Count)  // r is of type Row

    // Now we are simply selecting the first item of each subgroup.
   .Select(g=>g.First()) // g is IGrouping<Int32,Row>, g.First() is of type Row
   ;

Da

   ID    Date        Count
    1    01/01/01    5
    4    01/04/01    7
    7    01/07/01    4
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top