Tengo una consulta tirando de una base de datos:¿Cómo puedo establecer propiedades en todos los elementos de una consulta linq con valores de otro objeto que también se extrae de una consulta?
List<myClass> items = new List<myClass>(from i in context
select new myClass
{
A = i.A,
B = "", // i doesn't know this, this comes from elsewhere
C = i.C
}
También tengo otra consulta que hace una cosa similar:
List<myClass2> otherItems = new List<myClass2>(from j in context
select new myClass2
{
A = j.A, // A is the intersection, there will only be 1 A here but many A's in items
B = j.B
}
En realidad, estas clases son mucho más grandes y consulta de datos que se separa no sólo por base de datos pero también por servidor. ¿Es posible utilizar una consulta LINQ para rellenar la propiedad B para todos los items
donde los artículos.A se cruzan? Todos los predicados integrados de LINQ aparecen solo para hacer agregados, selecciones o expresiones bool.
En mi cerebro que tenían algo como esto, pero esto es todo lo que fuera:
items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));
O estoy siendo ridícula con tratar de hacer este trabajo en LINQ y sólo debería abandonarlo a favor de un bucle donde el ajuste real se vuelve trivial? Debido a los plazos, recurriré al bucle for (y de todos modos es probable que termine siendo mucho más legible a largo plazo), pero ¿es posible hacer esto? ¿Sería necesario un método de extensión para agregar un predicado especial para permitir esto?
Yo diría que su ciclo for es una buena implementación. – JonH
¿Podría mostrar un conjunto de datos simple que tiene la estructura principal que está buscando? ¿Qué está tratando de lograr esa última consulta? – Tormod
@Tormod: la segunda consulta contiene la variable 'B'. Estoy buscando un predicado o método de extensión que realice la población de la variable 'B' en la primera colección. –