首页 > 解决方案 > 如何在 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);
}

虽然它有效,但我认为可以缩短代码..有人有什么建议吗?

标签: c#linq

解决方案


此查询应该是最佳的:

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();

推荐阅读