Tengo dos IQueryables:¿Cómo puedo simplemente LINQ Join() para vincular dos IQueryables?
Ingrediente:
IngId
Description
AvailableIngredient:
IngId
ya tengo IQueryable por Ingrediente:
var ingQuery = from i in context.Ingredients
select i;
¿Cómo puedo agregar una unión a su filtro por AvailableIngredient
(es decir una unión interna)? Sé cómo hacerlo si tuviera que unirme todo el tiempo, es decir, desde ... unir contexto. Disponible ... etc.), pero la unión es condicional, así que necesito usar la otra sintaxis:
if (filterByAvailable)
{
IQueryable<Available> availableQuery = GetAvailableIngredientQuery(context);
ingQuery = ingQuery.Join(...); // Can I use this to join to the query?
}
esto puede no ser el método correcto, así que esto es lo que quiero hacer:
- GetAvailableIngredientQuery vuelve los ingredientes disponibles consulta, es decir 3000 de 6000 (pero no es así enumerar los resultados sin embargo, como es devuelto como IQueryable de EF)
- Únete a la availableQuery a la ingQuery, por lo que hay una unión interna entre las dos consultas
EDIT:
El código actualmente estoy usando (muy rápido), pero significa código duplicado :
IQueryable<Ingredient> query;
if (filterByAvailable)
{
IQueryable<Available> availableQuery = GetAvailableIngredientQuery(context);
query = from item in context.Ingredients
// Quite a few `where` clauses and stuff
join t in availableQuery on item.IngId equals t.IngId
select item;
}
else
{
query = from item in context.Ingredients
// The SAME `where` clauses and stuff as above
select item;
}
Eso es lo que ya he hecho. Lea mi edición (que vino antes de su respuesta), y causa una gran cantidad de duplicaciones. Además, esa es una sintaxis inválida. No puede usar '==' debe ser 'igual'. Gracias de cualquier manera. – GenericTypeTea
Pruebe la nueva solución. Debes haber perdido tu edición anterior ... – Clicktricity
Gracias, definitivamente parece que funcionará (no sé por qué lo intenté). Lamentablemente, estoy en un estado totalmente indestructible en este momento, así que lo intentaré un poco. – GenericTypeTea