Не знаю, сработает ли это, никогда не пробовал, но ...
Если оба класса могут реализовывать один и тот же интерфейс или совместно использовать базовый класс, не могли бы вы сделать:
var q = (booleanVariable)
? from p in myTable1 select (ISomeInterface)p
: from p in myTable2 select (ISomeInterface)p;
Если вы используете это часто, вы можете поместить его в свой собственный метод - я верю, что он вернет IQueryable .
Затем подключиться к остальной части запроса LINQ, используя методы LINQ вместосинтаксис LINQ C # (т. е. OrderBy () вместо orderby).Я просто не знаю, будет ли LINQ-to-SQL достаточно умным, чтобы перевести это в правильный SQL-запрос.
Но я согласен с комментарием Джона - это, вероятно, плохой дизайн, и его следует пересмотреть.Если вы не можете реорганизовать сами таблицы, и если вам нужен только доступ для чтения, как насчет представления, объединяющего две таблицы, то свяжите это представление с вашей структурой LINQ-to-SQL.