我有一个数据库表,其中包含每个SMS客户发送的条目。它看起来像这样:
CustomerId SentBy SentTo SentDate
我想创建一个报告,列出每个客户发送的SMS消息总量,使用LINQ(最好是流利的语法)
var smses = smsTable.GroupBy(x => x.CustomerId);
但是,我不太确定如何循环结果。我想要以下输出:
CustomerId SmsCount
----------------------
1234 1756
100 333
我很感激任何帮助!
答案 0 :(得分:2)
根据MSDN,GroupBy返回
IEnumerable<IGrouping<TKey, TElement>>
,每个IGrouping对象包含一个 TElement类型和密钥对象的集合。
这意味着您可以获得分组项的值将等于Key
,并且每个Key将与集合相关联。在您的情况下,您必须获得每个组中的密钥和项目计数。为此,可以使用以下代码。
var smses = smsTable.GroupBy(x => x.CustomerId)
.Select(y => new
{
CustomerId = y.Key,
smsCount = y.Count()
});
答案 1 :(得分:1)
尝试这样做:
var smses = smsTable.GroupBy(x => x.CustomerId).Select(group =>
new
{
CustomerId = group.Key,
SmsCount = group.Count()
});
希望它有所帮助!