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:
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?
Après avoir GroupBy
sé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
Déjame decir algunas palabras