我可以有一个where子句,工作在LINQ查询的孙子
本文关键字:查询 LINQ 工作 有一个 where 子句 我可以 | 更新日期: 2023-09-27 17:52:55
我有三个表,每个表都连接一个主键和一个外键,如testd和usertestd等。
Exam > Test > UserTest
这是我的理解,我可以使用LINQ从这些中获取数据,像这样:
var exams = _examsRepository
.GetAll()
.Where(q => q.SubjectId == subjectId)
.Include(q => q.Tests.Select(t => t.UserTests))
.ToList();
这将选择所有考试,考试的测试和那些测试的用户测试,其中SubjectId == SubjectId
是否有任何可能的方法,我可以进一步限制这一点,使它只显示数据时,UserTests的UserId为123?
如果答案是否定的,那么我应该重写这个LINQ首先去_userTestsRepository,然后在另一个方向向上而不是向下工作吗?
在这个问题上,他们提供了一个解决方案,可以满足你的要求,但在我看来,感觉有点像黑客。
或者,您也可以不使用include语句而使用手动连接,您可以在子表上应用任意多的过滤器。
可以看起来像这样:
var data = (from ex in context.exams
join t in context.tests on ex.Id equals test.ExamID
join ut in context.userTests on t.Id equals ut.TestId
where ut.UserId = 123
select new {ex, ut}).ToList();