关于c#:在LINQ中使用GroupBy

Using GroupBy in LINQ

本问题已经有最佳答案,请猛点这里访问。

我有一个数据库表,其中包含客户发送的每个短信息的条目。看起来像这样:

1
CustomerId  SentBy  SentTo SentDate

我想使用LINQ(最好是流利的语法)创建一个报告,列出每个客户发送的短信总数。

1
var smses = smsTable.GroupBy(x => x.CustomerId);

不过,我不太确定如何循环遍历结果。我想要以下输出:

1
2
3
4
CustomerId  SmsCount
----------------------
1234        1756
100         333

我非常感谢你的帮助!


According to MSDN, the GroupBy returns IEnumerable>and each IGrouping object contains a
collection of objects of type TElement and a key.

这意味着您可以得到分组项的值将等于Key,并且每个键将与一个集合关联。在您的情况下,您必须获得密钥以及每个组中的项目计数。为此,可以使用以下代码。

1
2
3
4
5
6
var smses = smsTable.GroupBy(x => x.CustomerId)
                    .Select(y => new
                                 {
                                    CustomerId = y.Key,
                                    smsCount = y.Count()
                                 });


尝试这样做:

1
2
3
4
5
6
var smses = smsTable.GroupBy(x => x.CustomerId).Select(group =>
                         new
                         {
                             CustomerId = group.Key,
                             SmsCount = group.Count()
                         });

希望它有帮助!