Tengo una relación de tabla secundaria principal. En el ejemplo siguiente, Foo tiene un FooID y un ParentFooID que admite nulos que apunta a un registro principal.Uniones condicionales en LINQ
La tabla de barras siempre está vinculada al registro principal. Este es el SQL que uso para obtener el resultado.
Select * from Foo f
JOIN Bar b
ON b.FooID =
CASE
WHEN f.ParentFooID is null
THEN f.FooID
ELSE f.ParentFooID
END
Tengo algunos problemas para conseguir esto en una consulta LINQ. Me gustaría evitar una combinación cruzada como la siguiente:
var q = from f in Foo
from b in Bar
where b.FooID == (f.ParentFooID ?? f.FooID)
Cheers,
Daniel
He descrito el escenario desde ... desde y sí, resulta en una unión cruzada que hace un escaneo de índice (no una búsqueda) por lo que va a funcionar mucho peor que la consulta original que está haciendo un búsqueda de índice – Spruce
Vale la pena probar, al menos. –