2012-10-26 54 views
1

恕我直言,我認爲這是對我來說最困難的事情 - 整個LINQ的MTM方面我需要幫助。查詢LINQ時遇到的困難多對多(MTM)協會

在SQL我有3個表:Accounts,AccountsInFeaturesFeaturesAccountsInFeatures只有兩個主鍵列鏈接到AccountsFeatures

在EF,AccountsInFeatures是不可見的 - 我明白爲什麼 - 但我在創建LINQ有問題:

這裏就是我想要做的事:

return (from a in _Store.Accounts 
     where a.AccountGUID == _AccountGUID 
     select new AccountDetails 
     { 
      AccountGUID = a.AccountGUID 
      AccountName = a.AccountName, 
      SelectedFeatures = a.Features.Select(f => f.FeatureGUID).ToList() 
     }).ToList(); 

這裏的定義AccountDetails

public class AccountDetails 
{ 
    public Guid AccountGUID { get; set; } 
    public string AccountName { get; set; } 
    public List<Guid> SelectedFeatures { get; set; }  
} 

如何填寫"SelectedFeatures"與功能的列表 - 這可能嗎?我親近的只是分裂成兩個查詢此=)

+0

順便說一句,你的意思MTM是什麼?只是好奇... –

+1

MTM =多對多 – Losbear

+0

好的...我想過那個。 :)我習慣了M×M表示法。 –

回答

1

這樣做:

public class AccountDetails 
{ 
    public Guid AccountGUID { get; set; } 
    public string AccountName { get; set; } 
    public Collection<Features> SelectedFeatures { get; set; }  
} 

return (from a in _Store.Accounts 
     where a.AccountGUID == _AccountGUID 
     select new AccountDetails 
     { 
      AccountGUID = a.AccountGUID 
      AccountName = a.AccountName, 
      SelectedFeatures = a.Features 
     }).ToList(); 
+0

我試過這個,它不會編譯:不能隱式地將類型'System.Collections.Generic.ICollection '轉換爲'System.Collections.Generic.List '。存在明確的轉換(你是否缺少轉換?)---我也嘗試添加ToList(),但是這給了我一個類似的轉換錯誤。 – Losbear

+0

只需將'Lists SelectedFeatures'替換爲'Collection SelectedFeatures'。 –

+0

你是男人!謝謝! – Losbear