Comparar dos EntityCollections en C# para encontrar similitudes.
Tengo 2 colecciones.
- Lista con todos los costos adicionales de una capacitación.
- Lista con los costos adicionales de un aprendiz.
Necesitaría comparar y obtener todos los costos adicionales encontrados en ambas colecciones.
Esto es lo que intenté:
“`c#
foreach (var extrakost in opleidingExtraKostResult.Entities)
{
if (extrakost.Attributes.Values.SequenceEqual(cursistExtraKosts.Entities.First().Attributes.Values))
{
EntityCollection similarCollection = new EntityCollection();
similarCollection.Entities.Add(extrakost);
}
}
Creo que el problema al que me enfrento es que `cursistExtraKosts.Entities.First().Attributes.Values` es un arreglo de entidades de costos adicionales. ¿Entonces estoy comparando una entidad con un arreglo de entidades?
EDICIÓN: Lo hice funcionar de esta manera:
```c#
EntityCollection similarCollection = new EntityCollection();
foreach (var extrakost in opleidingExtraKostResult.Entities)
{
foreach (var traineeExtraKost in cursistExtraKosts.Entities)
{
if (traineeExtraKost.Id==extrakost.Id)
{
similarCollection.Entities.Add(extrakost);
}
}
}
Un pequeño pajarito me dice que este no es el camino a seguir (mala performance). Por favor sugiera mejores métodos.
davy.ai
Como experto en tecnología de la información, existen mejores métodos para comparar y recuperar costos adicionales encontrados en ambas colecciones:
“`c#
var commonExtraCosts = opleidingExtraKostResult.Entities.Join(
cursistExtraKosts.Entities,
oek => oek.Attributes[“name”].ToString(),
cek => cek.Attributes[“name”].ToString(),
(oek, cek) => oek
).ToList();
Con este código, agregamos los elementos de la primera colección a un HashSet y comprobamos si la segunda colección contiene alguno de los elementos en el HashSet. Esto es más eficiente que iterar a través de ambas colecciones.