C# 从两个表到单个IEnumerable/IQueryable的Linq到SQL联合数据

C# 从两个表到单个IEnumerable/IQueryable的Linq到SQL联合数据,c#,sql-server,linq,linq-to-sql,.net-4.0,C#,Sql Server,Linq,Linq To Sql,.net 4.0,我在不同的SQL Server数据库(在不同的服务器上)中有两个日志表。这两个表具有完全相同的模式。在.NET应用程序中,我可以创建两个Linq到SQL类集合(DBML文件),然后执行自己的自定义Linq查询来合并这两个表并返回匿名类型。但是我在同一个表上有几个查询(都略有不同),每次执行联合都是重复的 是否可以将这两个表合并为一个具体/命名类型IEnumerable?基本上我想做的是: var logs = Logs.Where(l => l.TimeStart >= DateTi

我在不同的SQL Server数据库(在不同的服务器上)中有两个日志表。这两个表具有完全相同的模式。在.NET应用程序中,我可以创建两个Linq到SQL类集合(DBML文件),然后执行自己的自定义Linq查询来合并这两个表并返回匿名类型。但是我在同一个表上有几个查询(都略有不同),每次执行联合都是重复的

是否可以将这两个表合并为一个具体/命名类型IEnumerable?基本上我想做的是:

var logs = Logs.Where(l => l.TimeStart >= DateTime.Today)
并且让
日志
实际返回两个表中的数据,并将合理的查询发送到两个数据库服务器,而不管我在
.Where()
中输入了什么


这是可能的吗?

我相信,开箱即用的IQueryable无法覆盖多个数据上下文。你说你有

分离SQL Server数据库(在不同的服务器上)

解决方案可能是创建链接视图。例如:


一旦有了链接视图,查询将非常简单和直接。

我相信,开箱即用的查询无法得到一个覆盖多个数据上下文的IQueryable。你说你有

分离SQL Server数据库(在不同的服务器上)

解决方案可能是创建链接视图。例如:


一旦有了链接视图,查询将非常简单和直接。

您能告诉我们您的联合的代码吗?我实际上使用的是SO answer中的FullOuterJoin扩展方法。@TomHunter您是否尝试过创建一个单独的类,并将联合作为对象作为类new()的一部分返回?这样,在您的代码中,您只需创建一个新的类实例(联合等是作为new()sub的一部分完成的)@TomHunter希望这有点道理……我认为它实际上是我需要的IQueryable。无论我在我的
Where()
中使用何种筛选,我都需要向数据库发送合理的查询。你能给我们看一下你的联合体的代码吗?我实际上使用的是来自SO answer的FullOuterJoin扩展方法。@TomHunter你是否尝试过创建一个单独的类,并将联合体作为对象作为类new()的一部分返回?这样,在您的代码中,您只需创建一个新的类实例(联合等是作为new()sub的一部分完成的)@TomHunter希望这有点道理……我认为它实际上是我需要的IQueryable。无论我在
Where()
中使用何种筛选,我都需要向数据库发送合理的查询。我希望避免对数据库进行任何更改/添加视图。我希望避免对数据库进行任何更改/添加视图。