我有 2 个 SQL Server 表。父母可以有多个孩子,详见下文。在这种情况下 - 约翰史密斯有一个孩子(丽莎史密斯(的关系
People
|---------------|------------|
| PersonID | Name |
|---------------|------------|
| 1 | John Smith |
|---------------|------------|
| 2 | Lisa Smith |
|---------------|------------|
Details
|---------------|---------------|---------------|---------------|
| DetailsID | PersonID | DetailsType | ParentID |
| | | |(ref DetailsID)|
|---------------|---------------|---------------|---------------|
| 1001 |1 (John Smith) | parent | NULL |
|---------------|---------------|---------------|---------------|
| 1002 |2 (Lisa Smith) | child | 1001 |
|---------------|---------------|---------------|---------------|
在SQL查询中,我会像这样通过DetailsID获取John的孩子(此时我已经在代码中有了DetailsID(
SELECT p.Name
FROM People p
JOIN Details d on d.PersonID = p.PersonID
WHERE ParentID = 1001
在我的 C# 项目中,我知道如何通过以下方式获取详细信息表中的父 ID 列表详细信息ID,但我不知道如何获取孩子的详细信息。这是我的映射中的内容:
Children = (from d in dbSource.Details
where d.ParentID == 'the DetailID for parent that I have'
select d.PersonId).ToList())
这将返回子项 ID 的列表,但我需要从 People 表中返回包含所有子项详细信息的对象列表。
提前谢谢。
您可以使用 join-clasue 来获取人员数据
Children = ( from p in dbSource.People
join d in dbSource.Details
on p.PersonID equals d.PersonID
where d.ParentID == 'the DetailID for parent that I have'
select p
).ToList())
您必须尝试使用连接子句连接表尝试以下查询
var Children = from p in dbSource.People
join d in dbSource.Details
on p.PersonId equals d.PersonId
where d.ParentId == 123 select new
{PersonId = p.PersonId, PersonName = p.Name};