【问题标题】:Linq to SQL union data from two tables into single IEnumerable/IQueryableLinq to SQL 将两个表中的数据联合到单个 IEnumerable/IQueryable
【发布时间】:2013-02-02 18:58:42
【问题描述】:

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

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

var logs = Logs.Where(l => l.TimeStart >= DateTime.Today)

并且让Logs 实际上从两个表返回数据,并且无论我在.Where() 中放入什么,都会将合理的查询发送到两个数据库服务器。

这可能吗?

【问题讨论】:

  • 你能告诉我们你的工会代码吗?
  • 我实际上正在使用来自this SO answer的 FullOuterJoin 扩展方法。
  • @TomHunter 您是否尝试过创建一个单独的类并将联合作为对象作为类 new() 的一部分返回?这样,在您的代码中,您只需创建一个类的新实例(并且联合等作为 new() 子的一部分完成)
  • @TomHunter 希望这有点道理......
  • 我认为它实际上是我需要的 IQueryable。无论我在Where() 中使用哪种过滤,我都需要将合理的查询发送到数据库。

标签: c# sql-server linq linq-to-sql .net-4.0


【解决方案1】:

我相信开箱即用您无法获得一个涵盖多个数据上下文的 IQueryable。你提到你有

独立的 SQL Server 数据库(在不同的服务器上)。

一种解决方案可能是创建链接视图。示例:Create View using Linked Server db in SQL Server

获得链接视图后,查询将相当简单直接。

【讨论】:

  • 我希望避免对数据库进行任何更改/添加视图。
猜你喜欢
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2015-03-15
  • 2020-09-23
相关资源
最近更新 更多