c# - 如何在 linq 上的数据库中搜索两个表?
问题描述
我构建了一个对我来说似乎有点麻烦的代码,我相信它可以在 linq 中进行优化
我有一张包含所有喜欢这篇文章的用户的表格——起初我搜索了所有喜欢这篇文章的用户,然后我创建了一个循环来检查用户 ID 并将其添加到新列表中。
Users cUser = new Users ();
List <Users> allUsers = new List <Users> ();
List <Likes> allLikes = await _context.Likes.Where (x => x.AfazaId == id) .ToListAsync ();
foreach (Likes item in allLikes)
{
cUser = await _context.User.Where (x => x.Id == item.Id).FirstOrDefaultAsync ();
allUsers.Add (cUser);
}
虽然它有效,但我认为可以缩短代码..有人有什么建议吗?
解决方案
此查询应该是最佳的:
var query =
from like in _context.Likes.Where(x => x.AfazaId == id)
from user in _context.User.Where(x => x.Id == like.Id).Take(1)
select user;
var allUsers = await query.ToListAsync();
推荐阅读
- r - 在 R 库中查找数据集
- node.js - 为什么 npm init 在 package.json 中设置主键?
- ibm-mq - 如何恢复队列中的备份消息
- vba - 使用 VBA 在 Lotus Notes 上附加文件
- javascript - 如何使用 jQuery 覆盖一个类
- sql - 需要实现Filter,criteria spring data
- javascript - 我如何在 react.js 上的选择选项 html 标签中传输对象
- php - 由于自定义主题问题,Wordpress 媒体库不会引导媒体
- c# - C# 将字符串解析为表达式
- angular - 在 Angular 6 中使用具有输入属性的可重用组件