Linq合并不同站点的结果集怎么操作?

柠檬片-味道 2015-05-06 08:21:46
有两个Oracle数据库,分别存储student表和class表,要联接两张表查询,如select s.name,c.name from student s left outer join class c on s.classid=c.id where s.hobby like '%篮球%' and c.department like '%计算机%';现在把这条sql分解成两条,分表到对应的数据库去执行然后合并:

string sql1 = "select classid,name from student where hobby like '%篮球%'";
string sql2 = "select id,name from class where department like '%计算机%'";
DataSet dataset = new DataSet();
Dictionary<string, string[]> dict = new Dictionary<string, string[]>();
dict.Add("student", new string[] { "Data Source=172.168.1.1/ORCL;User ID=user1;Password=123", sql1 });
dict.Add("class", new string[] { "Data Source=172.168.1.2/ORCL;User ID=user2;Password=123", sql2 });
var tables = (from x in dict.AsParallel() select Query(x)).ToList();
Dictionary<string, DataTable> dict1 = new Dictionary<string, DataTable>();
for (int i = 0; i < tables.Count; i++)
{
dict1.Add(tables[i].TableName, tables[i]);
}
var result = from s in dict1["student"].AsEnumerable()
join c in dict1["class"].AsEnumerable()
on s["classid"] equals c["id"]
select new
{
studentname = s["name"],
classname = c["name"]
};

static DataTable Query(KeyValuePair<string, string[]> dict)
{
string host = dict.Value[0];
string sql = dict.Value[1];
using (OracleConnection conn = new OracleConnection(host))
{
OracleDataAdapter da = new OracleDataAdapter(sql, conn);
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds);
DataTable table = ds.Tables[0];
table.TableName = dict.Key;
return table;
}
}


合并时,对查询出来的结果集联接,字段的类型我并不知道,该怎么获取?合并的linq怎么写?还有个问题,由于是left out join,按照我写的方法分别去数据库中查询再合并,结果感觉会不对把?
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
柠檬片-味道 2015-05-07
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
你的代码可以,但是是全部取出,在内存中查询的。
合并的linq语句中取出来的字段需要转换类型,怎么获得呢?
threenewbee 2015-05-06
  • 打赏
  • 举报
回复
你的代码可以,但是是全部取出,在内存中查询的。
柠檬片-味道 2015-05-06
  • 打赏
  • 举报
回复
顶上去顶上去
第一部分 构建ASP.NET页面 第1章 ASP.NET Framework概览 2 1.1 ASP.NET和.NET Framework 5 1.1.1 框架类库 5 1.1.2 公共语言运行库 9 1.2 ASP.NET控件 10 1.2.1 ASP.NET控件概览 11 1.2.2 HTML控件 12 1.2.3 理解和处理控件事件 12 1.2.4 视图状态 17 1.3 ASP.NET页面 20 1.3.1 动态编译 20 1.3.2 控件树 23 1.3.3 使用代码隐藏页面 24 1.3.4 处理页面事件 27 1.3.5 使用Page.IsPostBack属性 29 1.3.6 调试和跟踪ASP.NET页面 30 1.3.7 跟踪页面执行 33 1.4 安装ASP.NET Framework 35 1.5 小结 37 第2章 使用标准控件 38 2.1 显示信息 38 2.1.1 使用Label控件 38 2.1.2 使用Literal控件 42 2.2 接收用户输入 44 2.2.1 使用TextBox控件 44 2.2.2 使用CheckBox控件 50 2.2.3 使用RadioButton控件 52 2.3 提交表单数据 55 2.3.1 使用Button控件 55 2.3.2 使用LinkButton控件 57 2.3.3 使用ImageButton控件 59 2.3.4 Button控件使用客户端脚本 62 2.3.5 执行跨页面发送 64 2.3.6 指定默认按钮 67 2.3.7 处理Command事件 68 2.4 显示图像 70 2.4.1 使用Image控件 70 2.4.2 使用ImageMap控件 71 2.5 使用Panel控件 75 2.6 使用HyperLink控件 79 2.7 小结 81 第3章 使用验证控件 82 3.1 验证控件概述 82 3.1.1 验证控件与JavaScript 85 3.1.2 使用Page.IsValid 85 3.1.3 设置Display属性 86 3.1.4 突出显示验证错误 86 3.1.5 使用验证组 90 3.1.6 禁用验证 93 3.2 使用RequiredFieldValidator控件 94 3.3 使用RangeValidator控件 97 3.4 使用CompareValidator控件 99 3.5 使用RegularExpressionValidator控件 103 3.6 使用CustomValidator控件 105 3.7 使用ValidationSummary控件 111 3.8 创建自定义验证控件 114 3.8.1 创建LengthValidator控件 115 3.8.2 创建AjaxValidator控件 117 3.9 小结 121 第4章 使用Rich控件 122 4.1 接收上传文件 122 4.1.1 把文件保存到文件系统 123 4.1.2 把文件保存到数据库 125 4.1.3 上传大文件 128 4.2 显示日历 133 4.2.1 创建弹出式日期选择器 135 4.2.2 根据数据库表呈现日历 137 4.3 显示广告 141 4.3.1 在XML文件中保存广告 141 4.3.2 在数据库表中存储广告 144 4.3.3 跟踪显示和转到 145 4.4 显示不同的页面视图 149 4.4.1 显示选项卡式页面视图 149 4.4.2 显示多部分表单 152 4.5 显示向导 153 4.6 小结 157 第二部分 设计ASP.NET网站 第5章 使用母版页设计网站 160 5.1 创建母版页 160 5.1.1 创建默认内容 163 5.1.2 嵌套母版页 166 5.1.3 在母版页中使用图片和超链接 170 5.1.4 在Web配置文件中注册母版页 172 5.2 修改母版页内容 172 5.2.1 使用Title属性 173 5.

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧