Hola, estoy trabajando en c # y tengo dos listas como se muestra a continuación.
public class Table1 { public long Id { get; set; } public int mid {get;set;} public int ChannelId { get; set; } public string Header { get; set; } public string FirstData { get; set; } public string Type { get; set; } public string SubType { get; set; } public string Unit { get; set; } } public class Table2 { public long Id { get; set; } public int mid {get;set;} public int ChannelId { get; set; } public string DateRange { get; set; } public string Time { get; set; } }A continuación se muestra la lista final que quiero
public class FinalTable { public long Id { get; set; } public int mid {get;set;} public int ChannelId { get; set; } public string Header { get; set; } public string FirstData { get; set; } public string Type { get; set; } public string SubType { get; set; } public string Unit { get; set; } public List<Table2> table2List { get;set;} } Entonces, tengo algunos datos en Table1 y Table2 . Estoy recuperando estas dos listas de diferentes fuentes y finalmente tengo que preparar la lista en forma de FinalTable .
En la tabla Table1 para cada mid y channelid habrá valores correspondientes en Table2 también. Esta es básicamente una relación de uno a muchos donde foreach mid y channelid en table1 habrá múltiples entradas en Table2 .
Entonces, después de mapear, finalmente me gustaría mostrar los datos en forma de FinalTable . FinalTable tiene la propiedad table2List para acomodar los datos de table2. Puedo hacer esto escribiendo bucles foreach múltiples o anidados, pero cuál sería el mejor enfoque para resolver esto.
Puedes usar Linq para esto. Su código se vería así:
var t1 = new List<Table1>(); // your real data as a list var t2 = new List<Table2>(); var result = t1.Select(t => new FinalTable { Id = t.Id, mid = t.mid, // ... table2List = t2.Where(x => x.mid == t.mid && x.ChannelId == t.ChannelId).ToList() });