1. 程式人生 > >利用 c# linq 實現跨數據庫的聯合查詢

利用 c# linq 實現跨數據庫的聯合查詢

eof foreach nbsp 實現 datetime hdu 根據 bsp awb

有個需求就是,我們要查詢的信息分布在兩個不同的數據庫中,通過外鍵相互關聯起來,然後返回datatable在前端展示內容。

根據需求我們可以考慮c#的linq 先在從不同的數據中獲取相關的datatable,然後把兩個datatable 通過 linq 關聯查詢返回內容

string sql = "select * from V_LoginLog where denglurq=@RQ";
DataTable dt = MsSqlHelper.ExecuteDataTable(ConnUeHis, sql, new SqlParameter("@RQ", rq));
string sql1 = "
select * from app_getopdschdule where OPDDATE=:OPDDATE"; DataTable dt1 = OracleHelper.ExecuteDataTable(ConnStrLzHis, sql1, new OracleParameter(":OPDDATE", rq)); var res = from m in dt.AsEnumerable()
from s in dt1.AsEnumerable() where m.Field<string>("LoginUser") == s.Field<string
>("DOCTORID") && m.Field<string>("shangxiawbz") == Convert.ToString(s.Field<decimal>("OPDTIMEID")) select new
{ DoctorName = s.Field<String>("DOCTORNAME"), OpdTimeID = m.Field<String>("shangxiawbz"), LoginTime = m.Field<DateTime>("
denglusj"), RoomName = s.Field<String>("ROOMNAME") }; DataTable DtTemp = new DataTable(); DtTemp.Columns.Add("DoctorName", typeof(String)); DtTemp.Columns.Add("OpdTimeID", typeof(String)); DtTemp.Columns.Add("RoomName", typeof(String)); DtTemp.Columns.Add("LoginTime", typeof(String)); foreach (var obj in res) {
DtTemp.Rows.Add(obj.DoctorName, obj.OpdTimeID == "1" ? "上午" : "下午", obj.RoomName, obj.LoginTime.ToString("yyyy-MM-dd HH:mm:ss"));

} return CommonHelper.Dtb2Json(DtAll);

利用 c# linq 實現跨數據庫的聯合查詢