請教C#Linq查詢DataTable的問題
再次請教各位有關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數據庫哦。
------解决方案--------------------
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
------解决方案--------------------C# code
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>("識別碼"))