/ / El mismo Linq para dos tablas - linq-to-sql

mismo Linq para dos tablas - linq-to-sql

Necesito hacer algo como esto,

Mis dos tablas tienen la misma firma, pero una clase diferente, así que se supone que funciona pero no funciona.

var myTable;

if (booleanVariable == true)
{
myTable = table1;
}
else
{
myTable = table2;
}


var myLinq1 = from p in myTable
join r in myOtherTable
select p;

En este caso, tengo que inicializar mi tabla

He intentado también,

var myTable= table2;

if (booleanVariable == true)
{
myTable = table1;
}

var myLinq1 = from p in myTable
join r in myOtherTable
select p;

luego var es de tipo table2, entonces no se puede cambiar al tipo de table1.

Necesito ayuda, no quiero hacer una copia pegada de todo el código. La consulta de linq es enorme, y está anidada con 5 o 6 consultas. También tengo que hacer esto en 12 métodos diferentes.

Muchas gracias por tu ayuda.

Respuestas

0 para la respuesta № 1

No sé si esto funcionará, nunca lo intenté, pero ...

Si ambas clases pueden implementar la misma interfaz o compartir una clase base, podría hacer lo siguiente:

var q = (booleanVariable)
? from p in myTable1 select (ISomeInterface)p
: from p in myTable2 select (ISomeInterface)p;

Si usas esto con frecuencia, puedes ponerlo en su propio método, creo que devolverá IQueryable <ISomeInterface>.

Luego conéctese al resto de la consulta LINQ usandolos métodos LINQ en lugar de la sintaxis de LINQ C # (es decir, OrderBy () en lugar de orderby). Simplemente no sé si LINQ-to-SQL será lo suficientemente inteligente como para traducir esto en la consulta SQL correcta.

Pero estoy de acuerdo con el comentario de Jon - esto es probablementeMal diseño, y debe ser revisado. Si no puede reorganizar las tablas en sí mismas, y si solo necesita acceso de lectura, ¿qué le parece una vista que une las dos tablas, y luego vincule esa vista a su estructura de LINQ-a-SQL?