c# - 如何将 Sql 查询转换为 Linq 及其在 Entity Framework Core 中的 Join() 方法的等价物
问题描述
select
a.*
from
Article a join
ArticleTag at on a.Id = at.ArticleId join
Tag t on at.TagId = t.Id
where
t.Id=8
我也可以访问IQueryable<Article>
,IQueryable<Tag>
和IQueryable<ArticleTag>
对象。
如何将此 Sql 查询转换为 Linq 及其Join()
在 Entity Framework Core 中的方法和 lambda 表达式的等价物?
解决方案
var innerJoinQuery =
from a in Article
join at in ArticleTag on a.Id equals at.ArticleId
where at.TagId == 8
select a;
这是最高效的方式。如果您使用 LINQ 扩展,EF 可能会做一些棘手的“事情”
但如果你坚持...
var innerJoinResult =
Articles.Join(ArticleTags.Where(x => x.TagId == 8),
a => a.Id,
at => at.ArticleId,
(a, at) => a);
推荐阅读
- r - 如何在dplyr中按组删除前n行
- java - 如何使用 Selenium 中的索引切换到窗口
- python-3.x - 如何使用 pywinauto 对子窗口上存在的按钮执行单击操作?
- remote-debugging - visual studio 2019:远程调试器找不到远程计算机
- sql-injection - 我完美的 java PrepareStatement 上的 HP Fortify 标签 SQL Injection
- python - 云存储,从字符串编码上传
- java - 如何使用线程实现 Reader/Writer 程序?
- java - Spring Boot:单向 SSL 在客户端强制密钥存储配置
- ruby-on-rails - 升级到 Rails 6 后,延迟作业的邮件测试无法正常工作
- c++ - 如何使一个函数具有三种不同的输出条件?