【问题标题】:TSQL Group By Query in LINQLINQ 中的 TSQL 按查询分组
【发布时间】:2012-12-31 04:54:57
【问题描述】:

评论表有用户ID。

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的? 我有以下不工作,不完整的代码。 代码

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();

【问题讨论】:

  • 您似乎在 select 语句中同时具有 r.review 和 count(r.review) 。你想得到什么?
  • 我尝试获取用户撰写的评论。一些用户在每个页面上对每个对象都写了相同的评论,例如:“很好”、“很好”、“很好”。
  • 我看到你编辑了你的问题。所以你只是想知道同一个评论被重复了多少次?我已经编辑了我的答案。

标签: c# sql linq sql-server-2008 tsql


【解决方案1】:

只需摆脱那个连接。

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多