asp.net-mvc - 从两个表中选择条件的表中的记录
问题描述
我正在创建一个迷你社交媒体,在主页上我必须查看用户朋友的帖子我有三个表
public class Post
{
[Key]
public int Id { get; set; }
public string Date { get; set; }
public string Text { get; set; }
[DisplayName("PicturePath")]
public string PicturePath { get; set; }
public int interests { get; set; }
public int userId { get; set; }
public User user { get; set; }
}
public class User
{
public int Id { get; set; }
[Required]
[MinLength(8)]
[MaxLength(25)]
public string Name { get; set; }
[DisplayName("Profile Picture")]
public string PicturePath { get; set; }
[Required]
public string Specialization { get; set; }
[Required]
public string BirthDate { get; set; }
[Required]
public string Brief { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Password")]
public string PasswordHash { get; set; }
[DefaultValue(false)]
public bool EmailConfirmed { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<FriendShip> friendShip { get; set; }
public virtual ICollection<ResetPassword> resetPassword { get; set; }
}
public class FriendShip
{
public int Id { get; set; }
public int UserId { get; set; }
public int FriendId { get; set; }
public string FriendShipDate { get; set; }
public User user { get; set; }
}
我正在尝试选择属于登录用户的朋友的帖子。每个用户都有朋友(FriendShip 表中输入的朋友 ID)......所以我想预览来自朋友的所有帖子。查询表格将如何?
解决方案
假设在您的 FriendShip 表上,一旦建立了“友谊”,您将添加两条记录,即 User-Friend(用户 ID = 当前用户 ID)和 Friend-User(用户 ID = 朋友的用户 ID)。
对于下面的 lambda 查询,请确保您已为 loggedInUserId 分配了登录用户的 ID。
- 首先我们做了一个用户朋友的数组
- 然后我们在另一个查询和 .contains() 中使用该数组,它将选择属于该数组中 ID 的所有帖子。
var friendsList = db.FriendShips.Where(f=>f.UserId == loggedInUserId).Select(f=>f.FriendId)ToArray();
List<Post> friendsPosts = db.Posts.Where(p=>friendsList.contains(p.userId))
推荐阅读
- python - 使用一系列列表中的每个后续项目创建一个唯一列表
- javascript - Javascript 提交表单未提交
- python - Python - 何时使用 ()
- sql - 有没有自然左外连接之类的东西
- python - python将列表元素加入列表列表
- python - 如何使用字符串调用 django 查询集?
- entity-framework-core - 如何避免在 EF Core 中加载父记录的所有子项
- java - Jsoup 获取元素旁边的数据
- ruby-on-rails - Rails ActiveStorage - 上传的图像在 5 分钟后抛出错误 400
- ssl - 无法将 Filebeat 连接到 Logstash