Linq to sql 两个表的Linq相同

Linq to sql 两个表的Linq相同,linq-to-sql,Linq To Sql,我需要这样做 我的两个表有相同的签名,但是不同的类,所以它应该可以工作,但是不工作 var myTable; if (booleanVariable == true) { myTable = table1; } else { myTable = table2; } var myLinq1 = from p in myTable join r in myOtherTable select p; 在这种情况下,我必须初始化myTab

我需要这样做

我的两个表有相同的签名,但是不同的类,所以它应该可以工作,但是不工作

var myTable;

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


var myLinq1 = from p in myTable
          join r in myOtherTable
          select p;
在这种情况下,我必须初始化myTable

我也试过,

var myTable= table2;

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

var myLinq1 = from p in myTable
          join r in myOtherTable
          select p;
那么var的类型是table2,那么它就不能更改为table1类型

我需要帮助,我不想复制粘贴所有代码。linq查询非常庞大,它嵌套了5或6个查询。我还要用12种不同的方法来做


非常感谢您的帮助。

不知道这是否有效,从未尝试过,但是

如果两个类可以实现相同的接口或共享一个基类,您是否可以执行以下操作:

var q = (booleanVariable) 
    ? from p in myTable1 select (ISomeInterface)p 
    : from p in myTable2 select (ISomeInterface)p;
如果您经常使用它,您可以将其放入自己的方法中-我相信它将返回IQueryable

然后使用LINQ方法而不是LINQ C#语法(即OrderBy()而不是OrderBy)连接到LINQ查询的其余部分。我只是不知道LINQtoSQL是否足够聪明,可以将其转换为正确的SQL查询


但我同意乔恩的评论——这可能是一个糟糕的设计,应该重新审视。如果不能重新组织表本身,并且只需要读取访问权限,那么使用一个将两个表合并在一起的视图,然后将该视图绑定到LINQ to SQL结构中。现在很抱歉,我不得不这么说,但我认为这是一个非常丑陋的SQL设计。如果有两个具有“相同签名”(我认为这是指相同的列)的表,那么某个地方必须有一个鉴别器列,而不是两个表。它们来自非常不同的来源,所以我最好将它们放在不同的表中。也许你不能理解这么少的信息,但相信我,我只用一张桌子就做到了,但它不起作用。我的问题很大。因此,我改变了设计,它为最终结果而工作。但是我在插入数据时遇到了麻烦。数据是完全相同的,但它有一个非常不同的含义。谢谢你的评论,但我已经试过了。你说得绝对正确。我有一个错误,非常感谢Jon,我必须稍微改变一下我的程序,但这是值得的。这些项目包含日期,而这些日期会改变状态。我必须找到状态更改的最新时间。这让我的查询变得可怕,因为最新的更改不一定是某个列上的最新更改。我将尝试你的方法并重新思考设计,当不止一个人认为相同时,我必须检查。谢谢你的回答。第一个查询有效,但在第二个嵌套查询中出现了相同的错误,类型table1和类型Table2之间没有隐式转换。Joe,我正在更改我的sql。我犯了一个错误,但我认为我是准时的。