C# LINQ中按组计数和最大列数

C# LINQ中按组计数和最大列数,c#,linq,C#,Linq,我有一个模型 public class Rate { public int Nr{ get; set; } public string Rate{ get; set; } public int Order{ get; set; } } 还有这样一个RateList=List Nr | Rate | Order 123 | A | 2 425 | A+ | 1 454 | B | 4 656 | B+ | 3 46

我有一个模型

public class Rate
{
    public int Nr{ get; set; }
    public string Rate{ get; set; }
    public int Order{ get; set; }
}
还有这样一个
RateList=List

Nr  |  Rate |  Order
123 |   A   |    2
425 |   A+  |    1
454 |   B   |    4
656 |   B+  |    3
465 |   A   |    2
765 |   B   |    4
  Rate | Count | Order
   A+  |   1   |  1
   A   |   2   |  2
   B+  |   1   |  3
   B   |   2   |  4
    var rating= RateList.Distinct().GroupBy(x => x.Rate)
.Select(x => new { Rate = x.Key, RateCount = x.Count() })
.OrderBy(x => x.Order);
请注意,顺序始终与速率匹配
(A+=1,A=2,B+=3,B=4,C+=5…
我想数一数该速率发生了多少次,并按顺序显示顺序

结果应该是这样的

Nr  |  Rate |  Order
123 |   A   |    2
425 |   A+  |    1
454 |   B   |    4
656 |   B+  |    3
465 |   A   |    2
765 |   B   |    4
  Rate | Count | Order
   A+  |   1   |  1
   A   |   2   |  2
   B+  |   1   |  3
   B   |   2   |  4
    var rating= RateList.Distinct().GroupBy(x => x.Rate)
.Select(x => new { Rate = x.Key, RateCount = x.Count() })
.OrderBy(x => x.Order);
或者没有列顺序

  Rate | Count 
   A+  |   1   
   A   |   2   
   B+  |   1   
   B   |   2 
在SQL中,如果我在表
Tab

SELECT Rate, COUNT(Rate), Max(Order) from Tab group by Rate
但是在林克

我在尝试这样的事情

Nr  |  Rate |  Order
123 |   A   |    2
425 |   A+  |    1
454 |   B   |    4
656 |   B+  |    3
465 |   A   |    2
765 |   B   |    4
  Rate | Count | Order
   A+  |   1   |  1
   A   |   2   |  2
   B+  |   1   |  3
   B   |   2   |  4
    var rating= RateList.Distinct().GroupBy(x => x.Rate)
.Select(x => new { Rate = x.Key, RateCount = x.Count() })
.OrderBy(x => x.Order);
但是没有起作用。
感谢您的帮助。

您的SQL查询等同于:

var rating = rateList.GroupBy(x => x.Rate)
                     .Select(x => new { 
                              Rate = x.Key, 
                              RateCount = x.Count(e => e != null),
                              Max = x.Max(g => g.Order) 
                       });

您的SQL查询等于:

var rating = rateList.GroupBy(x => x.Rate)
                     .Select(x => new { 
                              Rate = x.Key, 
                              RateCount = x.Count(e => e != null),
                              Max = x.Max(g => g.Order) 
                       });

我在末尾添加了
.OrderBy(x=>x.Ordem)
我得到了我想要的,谢谢:)我在末尾添加了
.OrderBy(x=>x.Ordem)
我得到了我想要的,谢谢:)