.net中如何使用linq递归查询

.net中使用linq递归查询

        public IEnumerable<NodeData> GetSonID(string p_id)
        {       //获取表中所有数据
            INodeDataService NodeDataService = new NodeDataService();
            var entity = NodeDataService.FindAll();

      //查询父节点和给定节点id相同的节点
            var query = from c in entity
                        where c.ParentId == p_id
                        select c;
            var list = query.ToList();

       //递归查询节点id和已经查询出来的节点的父节点相同的节点
            return query.ToList().Concat(query.ToList().SelectMany(t => GetSonID(t.NodeID)));
        }

  

时间: 2024-10-22 06:33:39

.net中如何使用linq递归查询的相关文章

C# 使用Linq递归查询数据库遇到的问题及解决方法

User表通常是我们在写"XX管理系统"项目时必须要用到的,有的情况下人员的分类属于树形结构,就是除了最高层和最低层,中间层都有相对的父和子,设计数据库的时候,我们通常会加一个parent_id这样的字段.这样我们就可以通过当前用户的user_id查询出他的直接下属有哪些,或者通过parent_id查询出他的直接上司是谁. 但是当我们想通过user_id去查询出其所有下属的时候,就不是能用一条简单的sql能实现的了.如果项目要是.Net Framework3.5以下的,就是没有Linq

感受一下.net中 lambda与 linq 的不同

lambda: ids.Add( _hahahacontext .hahahamodel .FirstOrDefault( a => a.name == "张宏伟" && a.age== 18 ) .id .ToString() ); linq: ids.Add(( from r in _hahahacontext.hahahamodel where (r.name == "张宏伟"&& r.age == 18) select

项目中遇到的 linq datatable select

1如何使用DataTable.Select选出来的Rows生成新的DataTable?DataTable dt = 数据源;DataTable dtt = new DataTable();dtt=dt.Clone();//拷贝框架DataRow[] dr = dt.select("条件");for(int i=0;i<dr.length;i++){dtt.ImportRow((DataRow)dr[i]);}this.DataGrid.DataSource=dtt;this.Da

oracle中 connect by prior 递归查询

Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id; 简单说来是将一个树状结构存储在一张表里

C# List中写出LINQ类似SQL的语句

很多时候,从一个关系表中挑出一个我们需要的元素列表采用SQL语句是再容易不过的了,其实C#的List中也可以采用类似的方法,虽然List中集成了Select(), Where()等语句,不过如果你的判断规则较为复杂,或者想要看起来一目了然,以下的方法也是可行的: 首先假设你有一个类 public class People { public string Name { get; set; } public int Age { get; set; } } 并且有一些初始化语句 List<People

LinQ递归查询

--由父项递归下级 with cte(refid,pid,zname,code) as (--父项 select refid,pid,zname,code from zuzhi where pid = 38 union all --递归结果集中的下级 select t.refid,t.pid,t.zname,t.code from zuzhi as t inner join cte as c on t.pid = c.refid ) select refid,pid,zname,code fro

请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?

using dotNET.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace dotNET.EFCoreRepository { /// <summary> /// ef 日志 /// </summary> public class EFLogge

Linq to Entities中无法构造实体或复杂类型

EF中在使用linq就行查询select时不能直接使用自动映射生成的类,需要在单独声明一个类或者使用匿名类在查询完成后再转为对应的对象. 1 public partial class WebForm1 : System.Web.UI.Page 2 { 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 using (aspnetdbEntities db = new aspnetdbEntities()) 6 { 7 //My

linq中group by

本文导读:LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.Linq有很多值得学习的地方,这里我们主要介绍Linq使用Group By. 一.Linq对谁适用 linq的语法通过System.Linq下面的Enumerable类提供支持,通过观察他的签名,你就会发现他为IEnumerable<T>实现了一系列的扩展方法,也就是说,只要是实现了IEnumera