C# 如何获取存储在对象中的集合中的对象?

C# 如何获取存储在对象中的集合中的对象?,c#,linq,C#,Linq,我正在尝试从数据库中检索帖子。Post具有连接集合,而连接具有对等对象。我想包括对等对象,其中PeerId等于传递的Id,但它返回连接集合中的所有对等对象。查询应该是什么样子 var posts = await context.Post.AsQueryable() .Include(u => u.Connections).ThenInclude(u => u.Peer) .Include(u => u.Connec

我正在尝试从数据库中检索帖子。Post具有连接集合,而连接具有对等对象。我想包括对等对象,其中PeerId等于传递的Id,但它返回连接集合中的所有对等对象。查询应该是什么样子

        var posts = await context.Post.AsQueryable()
            .Include(u => u.Connections).ThenInclude(u => u.Peer)
            .Include(u => u.Connections).ThenInclude(u => u.Issuer).Include(u => u.Location)
            .Include(u => u.Images)
            .Where(c=>c.Creator.UserSettings.ShowMe == true
            &&
            c.Connections.Any(connection => connection.PeerId==id)) //this line
            .OrderBy(item => item.Status)
            .ThenByDescending(d => d.CreatedDate)
            .ToListAsync();

    public class Post
{
    public long Id { get; set; }
    public long CreatorId { get; set; }
    public User Creator { get; set; }
    public long LocationId { get; set; }
    public virtual Location Location { get; set; }
    public ICollection<Connection> Connections { get; set; }
    public ICollection<Image> Images { get; set; }
    public string Status { get; set; }
}
public class Connection
{
    public long Id { get; set; }
    public long IssuerId { get; set; }
    public virtual User Issuer { get; set; }
    public long PeerId { get; set; }
    public virtual User Peer { get; set; }
    public long PostId { get; set; }
    public virtual Post Post { get; set; }
}
public class User
{
    public long Id { get; set; }

}
var posts=await context.Post.AsQueryable()
.Include(u=>u.Connections)。然后Include(u=>u.Peer)
.Include(u=>u.Connections)。然后Include(u=>u.Issuer)。Include(u=>u.Location)
.包括(u=>u.Images)
.Where(c=>c.Creator.UserSettings.ShowMe==true
&&
c、 Connections.Any(connection=>connection.PeerId==id))//此行
.OrderBy(项=>item.Status)
.ThenByDescending(d=>d.CreatedDate)
.ToListAsync();
公营职位
{
公共长Id{get;set;}
公共长创建者ID{get;set;}
公共用户创建者{get;set;}
公共长位置ID{get;set;}
公共虚拟位置{get;set;}
公共ICollection连接{get;set;}
公共ICollection映像{get;set;}
公共字符串状态{get;set;}
}
公共类连接
{
公共长Id{get;set;}
公共长IssuerId{get;set;}
公共虚拟用户颁发者{get;set;}
公共长PeerId{get;set;}
公共虚拟用户对等{get;set;}
公共长PostId{get;set;}
公共虚拟Post{get;set;}
}
公共类用户
{
公共长Id{get;set;}
}

如果以ListAsync的形式获得结果,则不需要asqueryable。此查询将用于ef core 5:

var posts = await context.Post
            .Include(u => u.Location)
            .Include(u => u.Images)
            .Include(u => u.Connections.Where(c=> c.PeerId==id))
            .ThenInclude(u => u.Peer)
            .ThenInclude(u => u.Issuer)
             .Where(c=>c.Creator.UserSettings.ShowMe == true)
             .OrderBy(item => item.Status)
            .ThenByDescending(d => d.CreatedDate)
            .ToListAsync();

要得到答案,您必须显示要包含在查询中的所有类。至少有主键和外键。@Sergey,我已经编辑了问题这能回答你的问题吗?