linq多表查询怎么用List<T>返回?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linq多表查询怎么用List<T>返回?相关的知识,希望对你有一定的参考价值。
linq多表查询怎么用List返回呢?
参考技术A var list_Con =多表语句 用做数据源,直接tolist()返回就OK用于连接多对多表的 Linq 查询
【中文标题】用于连接多对多表的 Linq 查询【英文标题】:Linq query for joining many to many tables 【发布时间】: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?
【参考方案1】:
它正在工作。
(from st in context.Students
from s in context.Subjects
join c in context.Classes
on new stuId = st.ClassId equals new stuId = c.Id
select new ComplexExamResult
Id = c.Id,
Firstname = st.Firstname,
SubjectName = s.SubjectName
).Where(c => c.Id == classId).AsNoTracking().ToList();
【讨论】:
以上是关于linq多表查询怎么用List<T>返回?的主要内容,如果未能解决你的问题,请参考以下文章