Saltar al contenido

C# Cómo dividir una Lista en dos usando LINQ

Simón, miembro de nuestro staff, nos hizo el favor de escribir esta crónica ya que conoce muy bien dicho tema.

Solución:

Puedes usar ToLookup método de extensión de la siguiente manera:

 List items = new List  new Foo  Name="A",Condition=true,new Foo  Name = "B", Condition = true ,new Foo  Name = "C", Condition = false  ;

  var lookupItems = items.ToLookup(item => item.Condition);
        var lstTrueItems = lookupItems[true];
        var lstFalseItems = lookupItems[false];

GroupBy y Single debería lograr lo que estás buscando:

var groups = events.GroupBy(e => e.Closer_User_ID == null).ToList(); // As others mentioned this needs to be materialized to prevent `events` from being iterated twice.
var openEvents = groups.SingleOrDefault(grp => grp.Key == true)?.ToList() ?? new List();
var closedEvents = groups.SingleOrDefault(grp => grp.Key == false)?.ToList() ?? new List();

Solución de una línea usando ForEach método de List:

List events = GetAllEvents();

List openEvents = new List();
List closedEvents = new List();

events.ForEach(x => (x.Closer_User_ID == null ? openEvents : closedEvents).Add(x));

Acuérdate de que tienes el privilegio valorar este enunciado .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *