.net - 使用 LINQ 选择分层数据?

标签 .net sql-server linq linq-to-sql hierarchical-data

我在 SQL Server 中有一个结构如下的表:

id  Name  Parent
--  ----  ------
1   foo   null
2   bar   1
3   oof   null
4   rab   3
.
.
.

我需要从两个关联的行中获取数据作为 .NET DataTable 中的一行。我想要的 DataTable 看起来像这样:

Parent  Child
------  -----
foo     bar
oof     rab

我能够使用以下查询完成此操作:

with temp as
(
  SELECT 1 id,'foo' name, null parent
  UNION
  select 2,'bar', 1
  UNION
  SELECT 3,'oof', null
  UNION
  select 4,'rab', 3
)

SELECT t1.name parent, t2.name child
FROM temp t1
INNER JOIN temp t2
ON t1.id = t2.parent

但我很好奇是否有一种使用 LINQ 执行此操作的简单方法? (我们的商店使用 LINQ 进行大部分数据库访问)

最佳答案

我更喜欢将连接保留为连接

var result = from t1 in table
join t2 in table on t1.id = t2.parent
select new { parent = t1.name, child = t2.name }

关于.net - 使用 LINQ 选择分层数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073770/

相关文章:

sql - 为每组选择前 2 个值

sql - 计算重叠时间范围内的分钟数总和

c# - 使用数组对 List<T> 进行排序

c# - LINQ:不同值和合并值

c# - 如何进行多用户事件驱动的屏幕更新?

c# - 如何在一个类中获得一个长时间运行的方法,以将其进度报告给 C# 中的调用类?

c# - 在我的应用程序中获取打开的连接字符串数

c# - 即使要连接的行不存在,也使 JOIN 查询匹配

.net - 在 Entity Framework Select 中使用 SQL 函数

c# - 总是在方法的开头使所有输出参数无效是一种好习惯吗