我有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#项目中,我知道如何获取Details表中的ParentID列表 详情ID但我不知道如何获取孩子们的详细信息。 这就是我的映射中的内容:
Children = (from d in dbSource.Details
where d.ParentID == 'the DetailID for parent that I have'
select d.PersonId).ToList())
这将返回Childrens' ID,但我需要从People表中返回包含所有子项详细信息的对象列表。
提前致谢。
答案 0 :(得分:1)
您可以使用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())
答案 1 :(得分:0)
您必须尝试使用join子句连接表 尝试以下查询
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};