asp.net-core – 实体框架核心 – 相当于IN子句
|
我想知道如何将此SQL查询转换为实体框架查询. SELECT * FROM Post WHERE PostId IN ( SELECT PostId FROM BlogPost WHERE BlogId = &blogId); 我正在尝试获取具有给定类别ID的帖子列表. 数据库简化: 博客(帖子的类别): BlogId Title .. 帖子: PostId Title .. BlogPost用于组合这两个表,并让每个帖子有多个类别: PostId BlogId 这是我已经拥有的,但当然查询不起作用: public async Task<IActionResult> Category(int? id)
{
int blogId = id;
if (blogId == null)
{
return NotFound();
}
ICollection<Post> posts = await _context.Post.Where(pid => pid.PostId.Contains(_context.BlogPost.Where(i => i.PostId == blogId).ToListAsync())).ToListAsync();
if (posts == null)
{
return NotFound();
}
return View(posts );
}
先感谢您. 解决方法以下是根据您提供的信息在一个查询中执行此操作的方法.var posts = await _context.Post
.Where(post =>
_context.BlogPost.Any(bp => bp.BlogId == blogId && bp.PostId == post.PostId)
)
.ToListAsync();
以下是我将如何在两个查询中执行此操作,以便根据您提供的信息使用Contains. var postIds = await _context.BlogPost
.Where(bp => bp.BlogId = blogId)
.Select(bp => bp.PostId)
.ToArrayAsync();
var posts = await _context.Post
.Where(p => postIds.Contains(p.PostId))
.ToListAsync();
如果我使用有价值的EntityFramework功能,我会在一个查询中执行此操作,并且我在BlogPost上有一个名为Post的引用属性. var posts = await _context.BlogPost
.Where(bp => bp.BlogId == blogId)
.Select(bp => bp.Post)
.ToListAsync();
如果我使用有价值的EntityFramework功能,并且我有一个名为Posts from Blog的集合属性,并且EntityFramework隐藏了许多BlogPost表,以至于您实际上从未与它来自C#. var posts = await _context.Blog
.Where(b => b.BlogId == blogId)
.SelectMany(b => b.Posts)
.ToListAsync();
另一方面,如果EntityFramework公开了许多BlogPost表,那么你仍然可以从Blog开始并使用正确配置的集合和引用属性来获取这样的帖子. var posts = await _context.Blog
.Where(b => b.BlogId == blogId)
.SelectMany(b => b.BlogPosts)
.Select(bp => bp.Post)
.ToListAsync();
要么 var posts = await _context.Blog
.Where(b => b.BlogId == blogId)
.SelectMany(b => b.BlogPosts.Select(bp => bp.Post))
.ToListAsync();
外卖,EntityFramework不是SQL.你在SQL中做什么可能会或可能不会直接映射,甚至适用于你在EntityFramework中如何进行映射.不仅如此,当您使用EntityFramework时,您使用的是EntityFramework和C#语言功能,而不是EntityFramework本身,例如LINQ.将问题分解为其组成部分可以帮助您解决问题,并使研究更容易进行更复杂的操作.单独学习和练习LINQ将帮助您更好地使用EntityFramework. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET实现二维码
- ASP.NET Ajax库死了吗?
- 何时在ASP.NET上选择LAMP?
- asp.net-mvc-3 – 为什么ValidationSummary(true)显示属性错
- asp.net-mvc – MVC / Razor – 当有下列括号时,Intellisen
- asp.net-mvc – 在MVC5中呈现Razor的部分视图
- asp.net通过Ajax UpdatePanel回传后滚动条位置变更解决方法
- asp.net – 授权web.config中的属性对授权节点
- ASP.NET MVC 3数据注释大于下载日期时间和int
- asp.net-mvc-3 – ASP.NET MVC 3中ViewBag.Title的替代方法
- asp.net – MVC3 Razor – 到期页面
- asp.net-mvc – 发布具有多个部分视图的表单
- asp.net-mvc-2 – 如何在ASP.NET MVC2中枚举form
- 在ASP.NET mvc 4中使用Ninject时是否需要控制器工
- asp.net-mvc-5 – Sharepoint 2013 MVC 5提供商托
- asp.net – 任何有关绘图组件/库的经验
- asp.net – 如何检查文档是否准备好?
- asp.net-mvc – 如何在ASP.NET MVC中定义表单域前
- asp.net – 如何使用Inno Setup脚本创建IIS应用程
- asp.net – 如何在GridView中隐藏TemplateField列
