Ran*_*ana 7 c# sql linq linq-to-sql
我有一张桌子
ID|VALUE
Run Code Online (Sandbox Code Playgroud)
VALUE是一个整数字段,可能的值介于0和4之间.如何查询每个值的计数?
理想情况下,结果应该是一个包含6个元素的数组,一个用于计算每个值,最后一个是总行数.
Len*_*rri 17
这个简单的程序就是这样做的:
class Record
{
public int Id { get; set; }
public int Value { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Record> records = new List<Record>()
{
new Record() { Id = 1, Value = 0},
new Record() { Id = 2, Value = 1 },
new Record() { Id = 3, Value = 2 },
new Record() { Id = 4, Value = 3 },
new Record() { Id = 5, Value = 4 },
new Record() { Id = 6, Value = 2 },
new Record() { Id = 7, Value = 3 },
new Record() { Id = 8, Value = 1 },
new Record() { Id = 9, Value = 0 },
new Record() { Id = 10, Value = 4 }
};
var query = from r in records
group r by r.Value into g
select new {Count = g.Count(), Value = g.Key};
foreach (var v in query)
{
Console.WriteLine("Value = {0}, Count = {1}", v.Value, v.Count);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Value = 0, Count = 2
Value = 1, Count = 2
Value = 2, Count = 2
Value = 3, Count = 2
Value = 4, Count = 2
Run Code Online (Sandbox Code Playgroud)
稍微修改后的版本只返回一个只包含值的数组:
int[] valuesCounted = (from r in records
group r by r.Value
into g
select g.Count()).ToArray();
Run Code Online (Sandbox Code Playgroud)
最后添加行数:
valuesCounted = valuesCounted.Concat(new[] { records.Count()}).ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8762 次 |
| 最近记录: |