教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>(""))