2012-03-02 1 views

ответ

1

Это дает вам все строки в таблице соединения - каждая строка представлена ​​как анонимный объект с двумя идентификаторами строки как свойства:

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

вы можете добавить пункт where перед select, если вы хотите, чтобы ограничить результат конкретного или нескольких фильмов.

Редактировать

То же самое с методами расширения и лямбда-выражений будет выглядеть следующим образом:

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

Edit 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

+0

Что бы я хотел сделать это в выражении лямбда – JED

+0

@JED: См. Мое Редактировать выше. – Slauma

Смежные вопросы