如何在 linq 上的数据库中搜索两个表? [复制]
Posted
技术标签:
【中文标题】如何在 linq 上的数据库中搜索两个表? [复制]【英文标题】:How to search two tables in Database on linq? [duplicate] 【发布时间】:2021-08-26 13:16:29 【问题描述】:我构建了一个对我来说似乎有点麻烦的代码,我相信它可以在 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);
虽然可行,但我认为可以缩短代码..有人有什么建议吗?
【问题讨论】:
从如何在 t-sql 中执行此操作开始。现在将其映射到 linq。 (您将使用内部联接,并在 linq 中使用.Join
扩展名)。一般的经验法则是,如果您可以使用单个 sql 语句执行此操作,您也可以使用单个 linq 语句执行此操作。
【参考方案1】:
这个查询应该是最优的:
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();
【讨论】:
以上是关于如何在 linq 上的数据库中搜索两个表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 Entity Framework Core 中,如何使用数据库级别的条件(不是本地 LINQ)查询连接表上的数据?