¿Cómo reescribo esto para ser más LINQy?

c# dapper linq

Pregunta

Tengo este conjunto de datos aquí. Events tiene una propiedad EventGroups que es del tipo List<Groups>

List<Events> e;
List<Groups> g;

// Get the data from the database using dapper
using( var con = DataAccessMaster.GetOpenConnection( ) ) {
    using( var multi = con.QueryMultiple( sprocname, new { StartDate = fromDate, EndDate = toDate }, commandType:CommandType.StoredProcedure ) ) {
        e = multi.Read<Events>( ).ToList( );
        g = multi.Read<Groups>().ToList();
    }
}

// Only put the groups that belong to one another within the related event so that when we goto bind it will be painless
foreach ( var ev in e ) {
    ev.EventGroups = new List<Groups>();
    foreach ( Groups group in g.Where( Groups => ( ev.EventID == Groups.EventID ) ) ) {
        ev.EventGroups.Add( group );
    }
}

return e;

Siento que el último bloque podría reescribirse más limpiamente de lo que es. ¿Qué puedo hacer para que esto sea más limpio?

Respuesta aceptada

Puede usar el método de extensión Enumerable.ToList para convertir un IEnumerable <T> en una nueva lista <T>:

foreach (var ev in e)
{
    ev.EventGroups = g.Where(groups => ev.EventID == groups.EventID)
                      .ToList();
}

Respuesta popular

Esto por ejemplo

ev.EventGroups = g.Where( Groups => ( ev.EventID == Groups.EventID )).ToList();

me viene a la mente.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow