当前位置:  开发笔记 > 编程语言 > 正文

如何在两个具有多对多关系的表(实体)之间使用LINQ进行JOIN查询,而EF中没有连接表?

如何解决《如何在两个具有多对多关系的表(实体)之间使用LINQ进行JOIN查询,而EF中没有连接表?》经验,为你挑选了1个好方法。

我没有明确定义复合表,因为EF会自动处理它,但是如何从一个表中查询结果与另一个表的ID:请举例:

public class Student
{
public int Id {get; set;}
public string Name{get; set;}
public ICollection Courses {get; set;}
}

public class Course
{
public int Id {get; set;}
public string Name {get; set;}
public ICollection Students {get; set;}
}

如何获得id = 3的学生的所有课程我提出了这个问题:

var studentCourses = from s in context.Students join c in context.Courses on s.Id equals ?? what?

我应该定义连接表吗?



1> smoksnes..:
// Return all courses where at least one student has a specific id.
var studentId = 3;
var courses = context.Courses.Where(x => x.Students.Any(y => y.Id == studentId));

要么

var studentId = 3;
var courses = context.Students.Where(x => x.Id == studentId).SelectMany(x => x.Courses);

我应该定义连接表吗?

不,除非它包含任何感兴趣的内容.它是否添加了比表之间的连接更多的信息,例如DateAdded?在那种情况下,我会为表创建一个实体.但不是这样.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有