2012-03-02 34 views

回答

1

这使您在结表中的所有行找回那些数据 - 每一行表示为与该行的两个ID的匿名对象作为属性:

var junctionTableDataList = (from m in context.Movies 
          from t in m.Tags 
          select new 
          { 
           MovieId = m.MovieId, 
           TagId = t.TagId 
          }).ToList(); 

你可以,如果你想限制结果为特定或几部电影的select之前添加where条款。

编辑

同样与扩展方法和lambda表达式是这样的:

var junctionTableDataList = context.Movies 
    .SelectMany(m => m.Tags.Select(t => new 
    { 
     MovieId = m.MovieId, 
     TagId = t.TagId 
    })) 
    .ToList(); 

编辑2

如果你想从一个方法,你可以返回数据创建一个litte帮助程序类型并返回这些“已命名”对象而不是匿名对象的列表:

public class JunctionData 
{ 
    public int MovieId { get; set; } 
    public int TagId { get; set; } 
} 

List<JunctionData> junctionTableDataList 
    = (from m in context.Movies 
     from t in m.Tags 
     select new JunctionData 
     { 
      MovieId = m.MovieId, 
      TagId = t.TagId 
     }).ToList(); 

...Select(t => new JunctionData...为扩展方法语法。

+0

感谢您的回答 – JED 2012-03-03 12:36:54

+0

如果我想要在lambda表达式中执行此操作 – JED 2012-03-04 13:45:30

+0

@JED:请参阅上面的Edit。 – Slauma 2012-03-04 14:10:00

相关问题