使用 count() 方法配合 lambda 表达式即可统计符合条件的记录数。只需在查询结果后链式调用 .where(predicate).count(),或者直接在 count() 中传入判断条件,该方法会遍历集合并返回满足条件的元素总数。

如何对分组后的每组数据分别统计数量?
在 LINQ 分组操作中,可以使用 GroupBy 将数据按指定键分组,然后对每个分组应用 Count() 来获取该组的记录数。这通常通过投影到匿名对象来实现,同时保留分组键和对应的计数值。

using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
var scores = new List<int> { 85, 92, 78, 88, 95, 60 };
// 统计及格(>=60)的人数
int passCount = scores.Count(s => s >= 60);
Console.WriteLine($"及格人数: {passCount}");
// 分组统计:按分数段分组并计数
var groupedScores = scores.GroupBy(s => s / 10)
.Select(g => new
{
Range = $"{g.Key * 10}-{g.Key * 10 + 9}",
Count = g.Count()
});
foreach (var item in groupedScores)
{
Console.WriteLine($"分数段 {item.Range}: {item.Count} 人");
}
}
}
如果分组键为 null 或空字符串,统计结果如何处理?
当分组键包含 null 或空值时,LINQ 的 GroupBy 会将这些元素归入同一个组,其分组键即为 null。因此,统计该组的数量时,Count() 会正常返回该组内的元素个数,不会抛出异常。开发者可以通过检查分组键是否为 null 来识别这一特殊组。

using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
var names = new List<string> { "Alice", "Bob", null, "Charlie", "" };
// 按名称长度分组,null 和空字符串会被视为长度 0
var groupedNames = names.GroupBy(n => n?.Length ?? 0)
.Select(g => new
{
Length = g.Key,
Count = g.Count(),
HasNullKey = g.Key == 0 && names.Any(n => n == null)
});
foreach (var item in groupedNames)
{
Console.WriteLine($"长度 {item.Length}: {item.Count} 个, 含Null: {item.HasNullKey}");
}
}
}


















