請教C#Linq查詢DataTable的問題

h744379120 2012-05-14 07:03:05
再次請教各位有關Linq操作C#DataTable的問題,這次我要用Linq操作兩個DataTable作子查詢,兩個簡單的DataTable表如下:
A:(表A數據來源:select * from 菜單)
識別碼 菜單名稱
1 會員管理
2 新增會員
3 刪除會員
4 卡操作
5 充錢
6 改卡密碼
.
.
.

B:(表B的數據來源:select * from 菜單關聯)
父菜單ID 子菜單ID
1 2
1 3
4 5
4 6
.
.
.
要用Linq實現以下這句sql的功能:select 識別碼,菜單名稱, from 菜單 where 識別碼 in(select 子菜單ID from 菜單關聯 where 父菜單ID='1')
注:是用linq操作以上的兩個DataTable,而不是用linq操作Sql數據庫哦。
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
h744379120 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
var query=from t1 in dt1.AsEnumerable() //菜单表
let temp=dt2.AsEnumerable().Where(t2=>t2.Field<int>("父菜单ID")==1).Select(t2=>t2.Field<int>("子菜单ID"))
where temp.Contains(t1)
select t1;


如果你想实……
[/Quote]
又是督察,灰常感謝。
q107770540 2012-06-28
  • 打赏
  • 举报
回复
var query=from t1 in dt1.AsEnumerable() //菜单表
let temp=dt2.AsEnumerable().Where(t2=>t2.Field<int>("父菜单ID")==1).Select(t2=>t2.Field<int>("子菜单ID"))
where temp.Contains(t1.Field<int>("識別碼"))
select t1;
EnForGrass 2012-06-28
  • 打赏
  • 举报
回复

var dtResult = from c in dtMenuAll.AsEnumerable()
where
(
from d in dtRelationalMenuAll.AsEnumerable()
where (d.Field<int>("父菜單ID") == Convert.ToInt64(1))
select d.Field<int>("子菜单ID")
).Contains(c.Field<int>("識別碼"))
q107770540 2012-06-28
  • 打赏
  • 举报
回复
var query=from t1 in dt1.AsEnumerable() //菜单表
let temp=dt2.AsEnumerable().Where(t2=>t2.Field<int>("父菜单ID")==1).Select(t2=>t2.Field<int>("子菜单ID"))
where temp.Contains(t1)
select t1;


如果你想实现无限弟归,查找 父菜单ID==1的所有子菜单也是可以
可参考:
http://topic.csdn.net/u/20120628/17/cedc4661-39b6-42c9-9ba1-a1d8e3244142.html
h744379120 2012-05-14
  • 打赏
  • 举报
回复
我錯誤的代碼如下:
var dtResult = from c in dtMenuAll.AsEnumerable()
where
(
from d in dtRelationalMenuAll.AsEnumerable()
where (d.Field<int>("識別碼") == Convert.ToInt64(1))
select d.Field<int>("識別碼")
).Contains(c.Field<int>("識別碼"))
select c.Table.Copy();
還有如何將 var dtResult 轉換為DataTable類型呢?
h744379120 2012-05-14
  • 打赏
  • 举报
回复
補充:空格被去了,兩表結構如下:
A:
識別碼 菜單名稱
1-------會員管理
2-------新增會員
3-------刪除會員
4-------卡操作
5-------充錢
6-------改卡密碼
.
.
.

B:
父菜單ID 子菜單ID
1---------2
1---------3
4---------5
4---------6
.
.
.

110,538

社区成员

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

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

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