用Linq操作兩個DataTable作子查詢,兩個簡單的DataTable表如下:
菜单:
识别码 菜单名称
1-------会员管理
2-------新增会员
3-------删除会员
4-------卡操作  
5-------卡充錢
6-------卡改密碼
.
.
.菜单关联:
父菜单ID 子菜单ID
1---------2
1---------3
4---------5
4---------6
.
.

这是一个做多级菜单关联的两张表,我要查找出父菜单ID等于1下的所包含的子菜单ID的菜单名称,也就是要在Linq下实现以下在sqlserver里的子查询功能:select 識別碼,菜單名稱, from 菜單 where 識別碼 in(select 子菜單ID from 菜單關聯 where 父菜單ID='1')

解决方案 »

  1.   


    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
      

  2.   

    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;
      

  3.   

    在linq方面我不懂就不裝,不懂就向人家學習,不像有些人,不懂死要裝,不裝會死,你說我連這個問題都不懂,那你懂?怎麼不見你有過回答?在督察面前說你多懂linq?是學生又怎麼樣?至少比你這種裝的要強多了,看你這輩子能裝多久。
      

  4.   

    感謝督察,linq方面看了不少你的作品,真正學習到不少東西。
      

  5.   

    继续装B吧,又不是没看过你的回答,大家看看你的空间和回答什么个水平都懂得啦。还有谁没有学生过?难道你在你码的B里就是大师了?吸水大师吧我看,看你这B样可能连学生水平还不如哦!
      

  6.   

    Quote: 引用 7 楼 dodducs 的回复:

    引用 5 楼  的回复:
    引用 1 楼 的回复:
    你连这种问题都不会的人,还谈设计。丢人么?
    你是学生吧。
    Quote:

    好一个大师级人物!还在他MaB里就已经是吸水大师了!