Principales respuestas
JOIN entre IEnumerable y DataTable

Pregunta
-
Hola a todos, tengo el siguiente código en un programa C#:
private class reportedSpeciesAtRisk { public Int32 IdConglomerado { get; set; } public Byte NumSitio { get; set; } public String NomGenero { get; set; } public String NomCientifico { get; set; } public String Origen { get; set; } public String CATEGORIA { get; set; } } IEnumerable<reportedSpeciesAtRisk> reportedSpecies_AtRiskTable = (from DataRow especieReportada in reportedSpecies.Rows join DataRow especieEnPeligro in speciesAtRisk.Rows on especieReportada["NomGenero"] + " " + especieReportada ["NomCientifico"] equals especieEnPeligro["campo"] select new reportedSpeciesAtRisk() { IdConglomerado = Convert.ToInt32(especieReportada["IdConglomerado"]), NumSitio = Convert.ToByte(especieReportada["NumSitio"]), NomGenero = especieReportada["NomGenero"].ToString(), NomCientifico = especieReportada["NomCientifico"].ToString(), Origen = especieReportada["Origen"].ToString(), CATEGORIA = especieEnPeligro["CATEGORIA"].ToString(), } );
Con el resultado trato de hacer otro join con un datatable de la siguiente forma:
from reportedSpeciesAtRisk reportedSpecies_AtRisk in reportedSpecies_AtRiskTable join reported_SpeciesAtRisk in reported_SpeciesAtRiskTable.AsEnumerable() on new {reportedSpecies_AtRisk.NomGenero, reportedSpecies_AtRisk.NomCientifico} equals new {reported_SpeciesAtRisk.Field<String>("Género"), reported_SpeciesAtRisk.Field<String>("Especie")}
pero me marca los errores siguientes:
Un tipo anónimo no puede tener varias propiedades con el mismo nombre
Declarador de miembro de tipo anónimo no válido. Los miembros de tipo anónimo deben declararse con una asignación de miembro, un nombre simple o un acceso al miembro.
Declarador de miembro de tipo anónimo no válido. Los miembros de tipo anónimo deben declararse con una asignación de miembro, un nombre simple o un acceso al miembro.
Ojala puedan ayudarme, de antemano gracias
Todos los errores son en la linea del equals- Editado jeduardonl martes, 18 de junio de 2013 22:00
Respuestas
-
Ya lo resolvi, me quedo así:
(from reportedSpeciesAtRisk reportedSpecies_AtRisk in reportedSpecies_AtRiskTable join DataRow reported_SpeciesAtRisk in reported_SpeciesAtRiskTable.Rows on new { X = reportedSpecies_AtRisk.NomGenero.ToString(), Y = reportedSpecies_AtRisk.NomCientifico.ToString(), Z = reportedSpecies_AtRisk.IdConglomerado } equals new { X = reported_SpeciesAtRisk.Field<String>("Género"), Y = reported_SpeciesAtRisk.Field<String>("Especie"), Z = reported_SpeciesAtRisk.Field<Int32>("NoCgl") } into r_SAR from subr_SAR in r_SAR.DefaultIfEmpty() select subr_SAR != null ? null : reportedSpecies_AtRisk).Distinct().ToList().Where(row => row != null).ToList();
- Marcado como respuesta jeduardonl jueves, 20 de junio de 2013 14:40
Todas las respuestas
-
hola
en la segunda query de linq donde defines el select ?
porque creo que de la unicon de la lista y el datatable debes salir algo que defina propiedades que no se repitan
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP martes, 18 de junio de 2013 23:32 ....
-
a continuación la query completa:
from reportedSpeciesAtRisk reportedSpecies_AtRisk in reportedSpecies_AtRiskTable join DataRow reported_SpeciesAtRisk in reported_SpeciesAtRiskTable.Rows on new {reportedSpecies_AtRisk.NomGenero, reportedSpecies_AtRisk.NomCientifico} equals new {reported_SpeciesAtRisk.Field<String>("Género"), reported_SpeciesAtRisk.Field<String>("Especie")} into r_SAR from subr_SAR in r_SAR.DefaultIfEmpty() select new { subr_SAR == null ? null : reportedSpecies_AtRisk };
Debo mencionar que en cuerpo del select me marca otro error:
Los miembros de tipo anónimo deben declararse con una asignación de miembro, un nombre simple o un acceso al miembro.
-
-
Ya lo resolvi, me quedo así:
(from reportedSpeciesAtRisk reportedSpecies_AtRisk in reportedSpecies_AtRiskTable join DataRow reported_SpeciesAtRisk in reported_SpeciesAtRiskTable.Rows on new { X = reportedSpecies_AtRisk.NomGenero.ToString(), Y = reportedSpecies_AtRisk.NomCientifico.ToString(), Z = reportedSpecies_AtRisk.IdConglomerado } equals new { X = reported_SpeciesAtRisk.Field<String>("Género"), Y = reported_SpeciesAtRisk.Field<String>("Especie"), Z = reported_SpeciesAtRisk.Field<Int32>("NoCgl") } into r_SAR from subr_SAR in r_SAR.DefaultIfEmpty() select subr_SAR != null ? null : reportedSpecies_AtRisk).Distinct().ToList().Where(row => row != null).ToList();
- Marcado como respuesta jeduardonl jueves, 20 de junio de 2013 14:40
-