Entity Framework 核心:Select Parent 还有一个 Child
Entity Framework Core : Select Parent and just one Child
我有一个 Parent 和 Child class 按照惯例定义:
public class Parent
{
public int Id { get; set; }
public string ParentName { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string ChildName { get; set; }
}
我有 ParentId
和 ChildId
可以查询。
我需要 select parent 和 只有 1 child 匹配 ChildId
.
如何在一次查询中执行此操作?
TIA
不确定是否可以在一个查询中同时获得两者,但下面应该可行。
var foundParentEnum =
from curParent in ListOfParents
where curParent.Id == parentIdLookingFor
select curParent;
var foundParent = foundParentEnum.FirstOrDefault();
var foundChild = foundParent.Children.FirstOrDefault();
如果您想在一个查询中找到 child。
var foundChildEnum =
from curParent in ListOfParents
where curParent.Id == parentIdLookingFor
select curParent.Children.FirstOrDefault();
添加了一个 JSFiddle 以查看它是否正常工作。
您要找的东西叫做Filtered Include。
在您的情况下,代码如下:
var parent = dbContext.Parents
.Include(p => p.Children
.Where(c => c.Id == childId))
.SingleOrDefault(p => p.Id == parentId)
我有一个 Parent 和 Child class 按照惯例定义:
public class Parent
{
public int Id { get; set; }
public string ParentName { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string ChildName { get; set; }
}
我有 ParentId
和 ChildId
可以查询。
我需要 select parent 和 只有 1 child 匹配 ChildId
.
如何在一次查询中执行此操作?
TIA
不确定是否可以在一个查询中同时获得两者,但下面应该可行。
var foundParentEnum =
from curParent in ListOfParents
where curParent.Id == parentIdLookingFor
select curParent;
var foundParent = foundParentEnum.FirstOrDefault();
var foundChild = foundParent.Children.FirstOrDefault();
如果您想在一个查询中找到 child。
var foundChildEnum =
from curParent in ListOfParents
where curParent.Id == parentIdLookingFor
select curParent.Children.FirstOrDefault();
添加了一个 JSFiddle 以查看它是否正常工作。
您要找的东西叫做Filtered Include。
在您的情况下,代码如下:
var parent = dbContext.Parents
.Include(p => p.Children
.Where(c => c.Id == childId))
.SingleOrDefault(p => p.Id == parentId)