.NET LINQ 实现跨数据库数据的整合
如果要在不同的数据库之间,要把数据整合到一起,或者对数据进行统计分析的话,实现起来比较麻烦。
一般情况下我们第一时间想到的方法是通过前置机实现,在前置机上安装一个数据库和同步数据程序,定时的把数据同步到数据库中,这样的实现方法虽然是可行的,但是成本增加了,而且数据不实时。

查询表达式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 实现跨数据库数据的整合的更多相关文章
- Oracle Job定时任务详解、跨数据库数据同步
业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...
- 利用 c# linq 实现跨数据库的联合查询
有个需求就是,我们要查询的信息分布在两个不同的数据库中,通过外键相互关联起来,然后返回datatable在前端展示内容. 根据需求我们可以考虑c#的linq 先在从不同的数据中获取相关的datatab ...
- BI测试工具之跨数据库数据对比,支持oracle,sqlserver
应用场景: 本周在进行SIT,我帮助仅有的一个测试妹妹对部分表进行数据质量验证,第一步需要做的就是比对source与stage表的table definition 与 数据内容的一致性. 本项目使用的 ...
- 如何完成dedecms外部数据库调用|跨数据库数据调用
第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...
- SQL跨数据库复制表数据
SQL跨数据库复制表数据 不同服务器数据库之间的数据操作 不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库.. ...
- Sqlserver 2005 跨数据库 导入数据
--Sqlserver 2005 跨数据库 导入数据:--SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/O ...
- php 跨数据库调取数据
我的这个是thinkphp,我就在 Application -> Common -> Conf -> config.php 文件里面配置数据库的地方,加入了下面这段代码 //'数据库 ...
- java 跨数据库导入大数据
java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...
- 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数
孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...
随机推荐
- Mybatis_4.DBUtil.java
1.获取SqlSessionFactory /** * @author:滕鹏飞 * @version: 1.0 * @Created on: 2018-8-31 下午2:10:45 * 类说明:加载配 ...
- LoadRunner(四)——深度了解LR相关功能
参考学习感谢:<精通软件性能测试与LoadRunner实战> 相关功能: 1 无工具情况下的性能测试 2性能测试工具LoadRunner的工作原理 3 VuGen应用介绍 4 协议的类型及 ...
- DCOS实践分享(5):Open DCOS深入分析
2016/05/18(三) 09:30 OpenDC/OS研討會暨工作坊 指導單位:經濟部.科技部 主辦單位:工業技術研究院.Linker Networks 協辦單位:Microsoft.資通訊產業聯 ...
- 【转载】看StackOverflow如何用25台服务器撑起5.6亿的月PV
问答社区网络 StackExchange 由 100 多个网站构成,其中包括了 Alexa 排名第 54 的 StackOverflow.StackExchang 有 400 万用户,每月 5.6 亿 ...
- 【安富莱二代示波器教程】第19章 附件E---参考资料
第19章 附件E---参考资料 DSP教程 http://forum.armfly.com/forum.php?mod=viewthread&tid=3886 . FreeRTOS教 ...
- Mycat适合场景及不适合场景
1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的.例如下图中的一个Mycat分库方案: 根据 tt_waybill 表的 id 字段来进行分片 分片方法为 id 值取 3 的 ...
- Java 三种方式实现接口校验
方法一:AOP 代码如下定义一个权限注解 package com.thinkgem.jeesite.common.annotation; import java.lang.annotation.Ele ...
- [Swift]LeetCode213. 打家劫舍 II | House Robber II
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- 3-4 计算属性的setter和getter
Vue中的计算属性的setter和getter //如上,fullName这个方法在取这个数据的时候,会执行get中的方法:而在设置数据时,会执行set中的方法.其中set中有个参数(value),用 ...
- python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析
非标准配置文件也是经常使用的,如何使用configparser来解析? 这要从configparser本身解析结构来说,configparser包含section和option,非标准配置文件只有op ...