C# 首先是实体框架代码的检查列表

C# 首先是实体框架代码的检查列表,c#,sql,entity-framework,ef-code-first,C#,Sql,Entity Framework,Ef Code First,我有两个对象ListingActivity和Activity,ListingActivities用于将活动链接到列表 这是物品 public class ListingActivity { [Key] public int ListingActivityId { get; set; } public Activity Activity { get; set; } public Listing Listing { get; set; } } public clas

我有两个对象ListingActivity和Activity,ListingActivities用于将活动链接到列表

这是物品

public class ListingActivity
{
    [Key]
    public int ListingActivityId { get; set; }
    public Activity Activity { get; set; }
    public Listing Listing { get; set; }
}

public class Activity
{
    [Key]
    public int ActivityId { get; set; }
    public string Name { get; set; }
    public ListingActivity ListingActivity { get; set; }
}
我想要一个清单,这样用户可以看到哪些活动已经链接到列表,然后选择那些没有链接的活动。我知道如何做用户界面和一切。但是,使用代码优先实体框架时,该查询会是什么样子呢

我已经用SQL实现了类似的功能,然后它看起来或多或少像这样(免责声明:伪SQL)


这就是我想要的,贴在这里,它可能会在将来帮助别人

var actList = (from a in db.Activities
                           join la in db.ListingActivities on a.ActivityId equals la.Activity.ActivityId into
                               tempActivities
                           from listingActivites in tempActivities.DefaultIfEmpty()
                           select new ListingActivityItem()
                                      {
                                          ListingActivityId = listingActivites.ListingActivityId,
                                          Activity = a,
                                          Checked = listingActivites.Listing != null
                                      }).OrderBy(p=>p.Activity.Name).ToList();
            return actList;

Activity ListingActivity
1:n吗?
var actList = (from a in db.Activities
                           join la in db.ListingActivities on a.ActivityId equals la.Activity.ActivityId into
                               tempActivities
                           from listingActivites in tempActivities.DefaultIfEmpty()
                           select new ListingActivityItem()
                                      {
                                          ListingActivityId = listingActivites.ListingActivityId,
                                          Activity = a,
                                          Checked = listingActivites.Listing != null
                                      }).OrderBy(p=>p.Activity.Name).ToList();
            return actList;