使用LINQ C#递归获取所有孩子

时间:2014-11-11 07:43:49

标签: c# mysql winforms linq

我想使用linq尽可能显示所有parentID,例如:  如果我选择“submodule_idparent = 6”则返回全部5并返回1.因为,要显示6我需要5和1.

  submodule_id, submodule_name, submodule_idparent

  1             Articles        null
  2             Suppliers       null
  3             Adjustment      1
  4             Presentations   1
  5             Categories      1
  6             Subcategories   5
  7             Corridors       1
  8             Cellars         1
  9             Purchases       2

我尝试使用下一个代码(MySQL)

SELECT DISTINCT(submodule_id) FROM users_privileges LEFT JOIN modules_options USING(moduleoption_id) WHERE users_privileges.user_id = 1

但不是递归的。

提前致谢(y)。

1 个答案:

答案 0 :(得分:1)

试试这个:

var query=GetAll(6);  

public IEnumerable<users_privileges> GetAll(int submodule_id)  
{  
    var query = from c in db.users_privileges 
           where c.submodule_id == submodule_id
           select c;  

    return  query.ToList().Concat(query.ToList().SelectMany(t => GetAll(t.submodule_idparent)));                
}   

http://blog.csdn.net/q107770540/article/details/7708418