C# 如何使用join添加额外属性

C# 如何使用join添加额外属性,c#,entity-framework,join,C#,Entity Framework,Join,如果我有一个实体: class Post { [ Key ] public int PostID { get; set; } public string Title { get; set; } public string Body { get; set; } public string Comment { get; set; } public virtual Project Project { get; set; } ... pu

如果我有一个实体:

class Post
{
    [ Key ]
    public int PostID { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public string Comment { get; set; }
    public virtual Project Project { get; set; }
    ...

    public bool LikedByUser; // Append this property
}

public class PostLike
{
    public int PostLikeID { get; set; }
    public virtual Post Post { get; set; }
}
是否有一种方法可以在调用数据库时进行连接,并将最后一个属性(代码中提到的)附加为额外属性。。。例如,此代码很愚蠢(并且可能不起作用):

我想要这样的东西:

this.context.Posts
    .Join( 
        this.context.PostLikes,
        p => p.PostID,
        pl => pl.Post.PostID,
        ( p, pl ) => {
            p.LikedByUser = pl.Count > 0 ? true : false;
        }
    );

因此,一种方法是通过子查询:

var posts = this.context.Posts
    .Select(p =>
    new Post()
    {
        PostID = p.PostID,
        Title = p.Title,
        Body = p.Body,
        Comment = p.Comment
        Project = p.Project,
        LikedByUser = this.context.PostLikes.Any(pl => pl.PostId = p.PostID)
    });
如果该属性不是现有类的一部分,则可以投影为匿名类型,以便使用:

var posts = this.context.Posts
    .Select(p =>
    new {
        Post = p,
        LikedByUser = this.context.PostLikes.Any(pl => pl.PostId = p.PostID)
    });

边栏:
pl.Count>0?true:false
可以缩短为仅
pl.Count>0
.1。LikedByUser是类Post中不存在的属性吗?2.课后是部分的吗。正如你所看到的,LikeByUser是一个存在于类Post上的属性。我认为该属性不是classIs的一部分。有没有一种方法可以做到这一点而不必为它创建映射对象?
var posts = this.context.Posts
    .Select(p =>
    new {
        Post = p,
        LikedByUser = this.context.PostLikes.Any(pl => pl.PostId = p.PostID)
    });