2013-01-16 103 views
0

检查表具有用户标识。LINQ中的TSQL群查询

select u.userid,review,COUNT(review) as coun,u.firstName,u.lastname,u.avatar,u.userid from reviews r 
inner join users u on u.userid=r.userid 
group by u.userid,review,u.firstName,u.lastname,u.avatar,u.userid 
order by coun desc 

这个脚本是如何转化为LINQ? 我有以下不工作,不完整的代码。 CODE

var reviews = from r in context.Reviews.Where(r => r.CreateDate > dateFrom && r.CreateDate < dateTo) 
           group r by new { r.Review1, r.UserID } into g 
           join u in context.Users on g.Key.UserID equals u.UserID 
           select new UserMan 
           { 
            ID = u.UserID, 
            Avatar = u.Avatar, 
            LastName = u.LastName, 
            FirstName = u.FirstName, 
            Review = g.Key.Review1, 
            Reviews = g.Count() 
           }; 
       return reviews.ToList(); 
+1

您似乎在select语句中同时具有r.review和count(r.review)。你想要得到什么? – istepaniuk

+0

我试图获得用户写的评论。有些用户在每个对象上写下相同的评论,例如:“好”,“好”,“每个页面都好”。 – levi

+1

我看到你编辑你的问题。所以你只是想知道同一个评论重复了多少次?我编辑了我的答案。 – istepaniuk

回答

2

刚刚摆脱的那个加入。

var reviews = from r in context.Reviews.Where(r => r.CreateDate > dateFrom && r.CreateDate < dateTo) 
    group r by new { r.Review1, r.User } into g 
    select new UserMan 
     { 
      ID = g.Key.User.UserID, 
      Avatar = g.Key.User.Avatar, 
      LastName = g.Key.User.LastName, 
      FirstName = g.Key.User.FirstName, 
      Review = g.Key.Review1, 
      Reviews = g.Count() 
     }; 

return reviews.ToList();