2012-11-17 31 views
0

我有兩個對象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; } 
} 

我想有一個清單,這樣用戶可以看到哪些活動已鏈接到列表,然後選擇要選擇沒有聯繫的人。我知道如何做UI和一切。但是,如何使用Code First Entity Framework執行此查詢。

我已經實現類似的功能與SQL那麼它看起來或多或少像這樣(免責聲明:僞SQL)

select case when ListingActivity!=null then 'checked' else 'not checked' 
from Activity 
left join ListingActivity 
+0

'Activity-ListingActivity' 1:n? –

回答

0

這就是我想要的東西,在這裏張貼,它可能會幫助別人,將來

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;