废话不多说,直接上代码:
using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
List<Region> list = GetTestData();
List<Region> query = GetResult(list, 2);
foreach (Region region in query)
{
Console.WriteLine(region.Name);
}
Console.ReadKey();
}
// 测试数据
static List<Region> GetTestData()
{
List<Region> list = new List<Region>();
list.Add(new Region() { Id = 1, ParentId = 0, Name = "中国" });
list.Add(new Region() { Id = 2, ParentId = 1, Name = "浙江" });
list.Add(new Region() { Id = 3, ParentId = 1, Name = "江苏" });
list.Add(new Region() { Id = 4, ParentId = 2, Name = "杭州" });
list.Add(new Region() { Id = 5, ParentId = 2, Name = "宁波" });
list.Add(new Region() { Id = 6, ParentId = 3, Name = "南京" });
list.Add(new Region() { Id = 7, ParentId = 3, Name = "苏州" });
return list;
}
// 递归查询
static IEnumerable<Region> GetRegion(List<Region> list, int id)
{
IEnumerable<Region> query = from region in list
where region.ParentId == id
select region;
return query.ToList().Concat(query.ToList().SelectMany(r => GetRegion(list, r.Id)));
}
// 生成最终结果
static List<Region> GetResult(List<Region> list, int id)
{
List<Region> regions = new List<Region>();
regions.AddRange(list.Where(r => r.Id == id));
regions.AddRange(GetRegion(list, id));
return regions;
}
}
}
运行结果如下:
浙江
杭州
宁波
本文地址:https://blog.csdn.net/HerryDong/article/details/107407721
如对本文有疑问, 点击进行留言回复!!
金蝶KIS商贸版 专业版 账套管理查看账套没有用户名 登录账套用户不存在 解决方法.
QueryWarpper的使用方法,MyBatics Plus的查询方法处理
sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”
网友评论