Comment regrouper et diviser des éléments dans une liste par code en ligne?

user9235753

Je travaille avec une base de données. Je veux recevoir tous les messages et les regrouper en fonction de RoomId(1 conversation contient le (s) message (s) avec le même RoomId).

J'ai essayé ceci:

public class Message
{
    public string SenderId { get; set; }

    public string ReceiverId { get; set; }

    public string RoomId { get; set; }
}

class Program
{
    static void Main()
    {
        var list = new List<Message>
            {
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room2" },
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room1" },
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room3" },
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room1" },
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room2" },
                new Message { SenderId = "Sender1", ReceiverId = "Receiver1", RoomId = "Room3" }
            };

        var group_list = list.GroupBy(x => x.RoomId);

        var output_list = new List<List<Message>>();

        foreach (var item in group_list)
        {
            output_list.Add(item.ToList());
        }

        foreach (var item in output_list)
        {
            Console.WriteLine($"Conversation {output_list.IndexOf(item) + 1}");

            foreach (var msg in item)
            {
                Console.WriteLine($"SenderId: {msg.SenderId}\tReceiverId: {msg.ReceiverId}\tRoomId: {msg.RoomId}");
            }

            Console.WriteLine();
        }
    }
}

Production:

Instantané de sortie

Je veux intégrer la partie:

foreach (var item in group_list)
{
    output_list.Add(item.ToList());
}

à:

var group_list = list.GroupBy(x => x.RoomId).[...what's next?...];

Comment puis je faire ça?

Tim Schmelter

Après avoir GroupBysélectionné le groupe qui est IEnumerable<Message>, vous pouvez donc utiliser ToList:

List<List<Message>> output_list = list
    .GroupBy(x => x.RoomId)
    .Select(g => g.ToList())
    .ToList();

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Comment regrouper des éléments dans une liste de listes en Python?

comment regrouper les éléments d'une liste par rapport à certaines informations dans chaque élément?

Comment diviser une liste en deux listes par des positions paires et impaires?

Comment regrouper des éléments par liste interne

Regrouper des éléments dans une liste en fonction de leur contenu

Comment diviser une liste par son élément dans Scala

Comment additionner les valeurs et les regrouper par une valeur clé dans la liste des cartes de Scala?

Comment regrouper des éléments XML dans la conception en les ajoutant à une balise parent

Comment diviser une seule ligne en plusieurs lignes et l'insérer dans une table dans Oracle?

Comment diviser une liste en n groupes dans toutes les combinaisons possibles de longueur de groupe et d'éléments au sein d'un groupe dans R?

Comment diviser une chaîne multiligne avec des entiers délimités par des espaces en une liste de listes pour chaque ligne

Comment regrouper et compter les objets par propriété dans une liste?

Comment diviser des éléments dans une cellule dans une certaine colonne et implémenter un encodage à chaud?

Comment supprimer des éléments de nouvelle ligne d'une liste en Python?

Comment regrouper plusieurs lignes en une seule ligne et colonne

Comment diviser les éléments de la liste et les enregistrer dans un fichier csv en python3

Comment combiner une liste et des éléments individuels en un seul tuple en python?

comment soustraire des éléments de tuple dans une liste de liste dans pandas et appliquer une condition?

Comment diviser une chaîne par soulignement et extraire un élément en tant que variable dans bash?

Comment identifier et capturer des éléments URL spécifiques dans une liste Python?

Regrouper et additionner par ligne dans R

Comment diviser par le changement dans une liste Y?

Comment diviser une liste par mot-clé dans Elixir

Comment prendre des éléments dans la liste et les reformer en json

Comment transformer une liste en une séquence de ses éléments séparés par des virgules?

Permuter et inverser des éléments dans une liste python

Comment puis-je regrouper les éléments d'une liste dans un ordre trié?

Comment trier une liste de chaînes en utilisant l'ordre des éléments dans une autre liste?

comment faire une liste qui contient des éléments comme chaque ligne de l'entrée en python

TOP Lista

CalienteEtiquetas

Archivo