如何在Code first方法中从联结表中检索数据。我知道我可以添加这样的数据。
Movie.Tag.Add(item)
但想知道如何在联结表中找回这些数据
答案 0 :(得分:1)
这为您提供了联结表中的所有行 - 每一行都表示为一个匿名对象,该行的两个ID作为属性:
var junctionTableDataList = (from m in context.Movies
from t in m.Tags
select new
{
MovieId = m.MovieId,
TagId = t.TagId
}).ToList();
如果您想将结果限制为特定或几部电影,可以在where
之前添加select
子句。
修改强>
与扩展方法和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...
获取扩展方法语法。