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 =&gt; s.Classes, (s, c) =&gt; 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>返回?的主要内容,如果未能解决你的问题,请参考以下文章

C#多表查询返回List<T>

c# ef框架怎么使用linq语句多表查询?

linq 分页方法怎么用

利用linq to sql 建立查询方法返回值类型为List<T> 怎样去除集合中的重复数据?

C# linq 多表in语句查询

使用 linq 到 List<T> 的数据集