根据用户帖子的增加来增加用户的积分

时间:2015-09-28 12:53:51

标签: c# asp.net-mvc algorithm linq linq-to-entities

我有一个简单的用户,可以使用以下字段----

   public class User
    { 
      public User()
      {
       this.Posts = new HashSet<Post>();
       }
    [Key]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    piblic int point {get; set;}
    public virtual ICollection<Post> Posts { get; set; }
    }
}

然后,我有一个与用户类似的帖子表---

 public class Post
 { 
   public Post()
   {
      public int PostId { get; set; }
      public string Message { get; set; }
      public int PostedBy { get; set; }
      public virtual User User { get; set; }
   }
 }

现在,用户和帖子表之间存在一对多的关系。 1个用户可以拥有多个帖子。现在,我想根据用户在帖子中的帖子增量增加用户点数。假设,用户在某些问题上发布了5个帖子然后我想将他的积分从0增加到25表示每个帖子,增量为5。 到目前为止我所尝试的是这个查询-----

    from p in Posts
    join u in UserProfiles
    on p.PostedBy equals u.UserId
    where p.PostedBy == 1
    group p by p.PostedBy into dups 
    let totalcount = dups.Count()
    select totalcount

1&gt;现在,我想将此总计数值(输出)分配给UserProfilesTable中的用户点列,并将该值保存到数据库中。 很多人都提前感谢!!!

1 个答案:

答案 0 :(得分:0)

public class User
{ 
    public User()
    {
        this.Posts = new HashSet<Post>();
    }
    [Key]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public int point {get { return this.Posts.Count*5; } }
    public virtual ICollection<Post> Posts { get; set; }
}

这是一个LINQ查询:

var user = db.UserProfiles.Select(up=> new User {
  UserId=up.UserId,
  UserName=up.UserName,
  Password=up.Password, //Really?
  point=up.Posts.Count()*5,
  });