从表中选择记录,并从两个表中选择条件

时间:2019-12-18 14:26:00

标签: asp.net-mvc entity-framework

我正在创建一个小型社交媒体,因此我必须在主页中查看用户朋友的帖子 我有三张桌子

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)...所以我想预览所有来自朋友的帖子。 查询表单将如何?

1 个答案:

答案 0 :(得分:0)

假设在FriendShip表上建立了“友谊”,您将添加两个记录,分别是User-Friend(用户ID =当前用户ID)和Friend-User(用户ID =朋友的用户ID)

对于下面的lambda查询,请确保已为登录的用户ID分配了登录用户的ID。

  1. 首先,我们结交了一系列用户的朋友
  2. 然后我们在另一个查询和.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))
相关问题