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; }
}

我有 ParentIdChildId 可以查询。

我需要 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)