如果要在不同的数据库之间,要把数据整合到一起,或者对数据进行统计分析的话,实现起来比较麻烦。

一般情况下我们第一时间想到的方法是通过前置机实现,在前置机上安装一个数据库和同步数据程序,定时的把数据同步到数据库中,这样的实现方法虽然是可行的,但是成本增加了,而且数据不实时。

查询表达式LINQ简介:     https://kb.cnblogs.com/page/42597/1/

利用LINQ获取不同数据库例子如下:

        // 获取病历时间轴数据集
public DataTable GetEmrTimeLineDtByMrn(string mrn)
{
DataTable dt = null;
//获取银江电子病历
string esql = "select * from his_cpr_pr where mrn=@mrn";
DataTable edt = MsSqlHelper.ExecuteDataTable(ConnStr, esql, new SqlParameter("@mrn", mrn)); //获取联众电子病历
string esql1 = "select * from his_cpr_pr where mrn=:mrn";
DataTable edt1 = OracleHelper.ExecuteDataTable(ConnStrLzEmr, esql1, new OracleParameter(":mrn", mrn)); //获取西岛电子病历
string esql2 = "select * from his_cpr_pr where mrn=@mrn";
DataTable edt2 = MsSqlHelper.ExecuteDataTable(ConnStrSIEmr, esql2, new SqlParameter("@mrn", mrn)); //获取lis检验结果(方格)
string lsql = "select * from v_lis_xm where MRN=:mrn";
DataTable ldt = OracleHelper.ExecuteDataTable(ConnStrLis, lsql, new OracleParameter(":mrn", mrn)); //获取pacs报告
string psql = "select * from VHIS_TL where MRN=:mrn";
DataTable pdt = OracleHelper.ExecuteDataTable(ConnStrPacs, psql, new OracleParameter(":mrn", mrn)); //获取ecg报告和图片
string ecsql = "select * from v_ecg_report where MRN=@mrn";
DataTable ecdt = MsSqlHelper.ExecuteDataTable(EcgConnStr, ecsql, new SqlParameter("@mrn", mrn)); //获取生命体征
string ewllsql = "select * from v_ewll_info where MRN=:mrn";
DataTable ewlldt = OracleHelper.ExecuteDataTable(ConnStrLzHis, ewllsql, new OracleParameter(":mrn", mrn)); //获取lis检验结果(联众)
string lsql1 = "select * from v_lis_xm where MRN=:mrn";
DataTable ldt1 = OracleHelper.ExecuteDataTable(ConnStrLis1, lsql1, new OracleParameter(":mrn", mrn)); //linq联合查询并按时间排序
var q = from dt9 in
(
(
from dt1 in ldt.AsEnumerable()
select dt1
).Union(
from dt2 in edt.AsEnumerable()
select dt2
).Union(
from dt3 in pdt.AsEnumerable()
select dt3
).Union(
from dt4 in ecdt.AsEnumerable()
select dt4
).Union(
from dt5 in edt1.AsEnumerable()
select dt5
).Union(
from dt6 in ewlldt.AsEnumerable()
select dt6
).Union(
from dt7 in ldt1.AsEnumerable()
select dt7
).Union(
from dt8 in edt2.AsEnumerable()
select dt8
)
).AsEnumerable()
orderby dt9.Field<string>("DODATE") descending
select dt9; if (q.Any() == false)
{
dt = null;
}
else
{
dt = q.CopyToDataTable();
}
return dt;
}

.NET LINQ 实现跨数据库数据的整合的更多相关文章

  1. Oracle Job定时任务详解、跨数据库数据同步

    业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...

  2. 利用 c# linq 实现跨数据库的联合查询

    有个需求就是,我们要查询的信息分布在两个不同的数据库中,通过外键相互关联起来,然后返回datatable在前端展示内容. 根据需求我们可以考虑c#的linq 先在从不同的数据中获取相关的datatab ...

  3. BI测试工具之跨数据库数据对比,支持oracle,sqlserver

    应用场景: 本周在进行SIT,我帮助仅有的一个测试妹妹对部分表进行数据质量验证,第一步需要做的就是比对source与stage表的table definition 与 数据内容的一致性. 本项目使用的 ...

  4. 如何完成dedecms外部数据库调用|跨数据库数据调用

    第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...

  5. SQL跨数据库复制表数据

    SQL跨数据库复制表数据   不同服务器数据库之间的数据操作 不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库.. ...

  6. Sqlserver 2005 跨数据库 导入数据

    --Sqlserver 2005 跨数据库 导入数据:--SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/O ...

  7. php 跨数据库调取数据

    我的这个是thinkphp,我就在 Application -> Common -> Conf -> config.php 文件里面配置数据库的地方,加入了下面这段代码 //'数据库 ...

  8. java 跨数据库导入大数据

    java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...

  9. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数

    孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...

随机推荐

  1. hibernate的session的增删查改

    一.增 //******************增加****************** Customer c = new Customer(); c.setCust_name("阿里云&q ...

  2. RabbitMQ in Action (2): Running and administering Rabbit

    Server management the Erlang node and the Erlang application Starting nodes multiple Erlang applicat ...

  3. React Native组件、生命周期及属性传值props详解

    创建组件的三种方式 第一种:通过ES6的方式创建 /** * 方式一 :ES6 */ export default class HelloComponent extends Component { r ...

  4. Tomcat线程池配置

    简介  线程池作为提高程序处理数据能力的一种方案,应用非常广泛.大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:线程池一般有三个重要参数: 最大线程数 ...

  5. MySQL InnoDB 备份与恢复七种方式

    有几种方式: 1 mysqldump, 这种方式不仅适用于InnoDB,还适用于其它类型的存储引擎,如MyISAM.备份的时候将数据库备份成SQL(包含drop,create,insert等语句),恢 ...

  6. #Java学习之路——基础阶段(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. [Swift]LeetCode387. 字符串中的第一个唯一字符 | First Unique Character in a String

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...

  8. [Swift]LeetCode529. 扫雷游戏 | Minesweeper

    Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representin ...

  9. [Swift]LeetCode605. 种花问题 | Can Place Flowers

    Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...

  10. [Swift]LeetCode668. 乘法表中第k小的数 | Kth Smallest Number in Multiplication Table

    Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number ...