Это дает вам все строки в таблице соединения - каждая строка представлена как анонимный объект с двумя идентификаторами строки как свойства:
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...
для расширения способ синтаксиса.
спасибо за ответ – JED
Что бы я хотел сделать это в выражении лямбда – JED
@JED: См. Мое Редактировать выше. – Slauma