• .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;
            } 
    View Code

     

  • 相关阅读:
    内存分析工具MAT(Memory Analyzer Tool)从安装到使用
    java 技术分享
    FreeMarker三宗罪之优缺点
    100+经典Java面试题及答案解析
    java中使用SimpleDateFormat实现字符串和日期的相互转换
    SQLSERVER还原数据库失败:错误: 3154
    值不能为null.参数名: viewInfo,如何解决
    java中判断Object对象类型
    ajax图片上传(asp.net +jquery+ashx)
    ElasticSearch 入门介绍
  • 原文地址:https://www.cnblogs.com/flywong/p/8334229.html
Copyright © 2020-2023  润新知