【发布时间】:2021-04-02 00:46:58
【问题描述】:
我是 LINQ 的新手,需要您的建议。 我有 2 个这样的表:
public class Subjects
{
public Subjects()
{
Classes = new List<Classes>();
}
public int Id { get; set; }
public string SubjectName { get; set; }
public virtual List<Classes> Classes { get; set; }
}
public class Classes
{
public Classes()
{
Subjects = new List<Subjects>();
}
public int Id { get; set; }
public string ClassName { get; set; }
public virtual List<Subjects> Subjects { get; set; }
}
和实体框架创建SubjectClasses
public SubjectsMap()
{
this.HasKey(s => s.Id);
this.Property(s => s.SubjectName)
.IsRequired()
.HasMaxLength(50);
this.ToTable("Subjects");
this.HasMany(c => c.Classes)
.WithMany(s => s.Subjects)
.Map(cs =>
{
cs.MapLeftKey("SubjectId");
cs.MapRightKey("ClassId");
cs.ToTable("SubjectClasses");
});
}
Subject---- SubjectClasses ----- 类
我的上下文没有 SubjectClasses,所以我需要将 SQL 查询转换为 Linq 或 Lambda。但是 Linqpad 对我没有帮助,或者我无法使用它。我只是想取名字,主题名
SELECT st.Firstname, s.SubjectName
FROM SubjectClasses sc
INNER JOIN Subjects s on s.Id = sc.SubjectId
INNER JOIN Students st on st.ClassId = sc.ClassId
WHERE sc.ClassId = 3
【问题讨论】:
-
喜欢这个?
context.Subjects.SelectMany(s => s.Classes, (s, c) => new { s.SubjectName, c.ClassName}) -
我怎样才能显示students.Firstname?
标签: sql linq join lambda many-to-many