Это дает вам все строки в соединительной таблице - каждая строка представляется как анонимный объект с двумя идентификаторами строки в качестве свойств:
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();
Редактировать 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...
для синтаксиса метода расширения.