2012-10-26 42 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