我有一个简单的用户,可以使用以下字段----
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中的用户点列,并将该值保存到数据库中。 很多人都提前感谢!!!
答案 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,
});