using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Wolfy.LinqAggregation
{
class Program
{
static void Main(string[] args)
{
//生成测试数据
List<Product> list = new List<Product>();
Random r = new Random();
for (int i = 0; i < 5; i++)
{
float iran = r.Next(1, 111);
Product pro = new Product() {
ID = i + 1,
Name = "宝马" + i.ToString(),
Price = iran * 1000,
ProductDate = DateTime.Now.AddDays(i) };
Product pro2 = new Product() {
ID = i + 1,
Name = "宝马" + i.ToString(),
Price = iran * 1000,
ProductDate = DateTime.Now.AddDays(i) };
list.Add(pro);
list.Add(pro2);
}
//求和,求所有的产品总价
var sumResult = from s in list
//根据id分组 将分组后的结果集存入p
group s by s.ID into p
//此时结果集已经是p,所以要从p中取数据。
select new {
key = p.Key,
sum = p.Sum(x => x.Price),
min = p.Min(x => x.Price),
max = p.Max(x => x.Price),
average = p.Average(x => x.Price),
count=p.Count() };
foreach (var item in sumResult)
{
Console.WriteLine("id:" + item.key);
Console.WriteLine("分组的单价总和:" + item.sum);
Console.WriteLine("分组的最小值:"+item.min);
Console.WriteLine("分组的最大值:" + item.max);
Console.WriteLine("分组的平均值:" + item.average);
Console.WriteLine("分组的中个数:" + item.count);
}
Console.Read();
}
}
/// <summary>
/// 产品类
/// </summary>
class Product
{
/// <summary>
/// 产品id
/// </summary>
public int ID { set; get; }
/// <summary>
/// 产品名称
/// </summary>
public string Name { set; get; }
/// <summary>
/// 产品单价
/// </summary>
public double Price { set; get; }
/// <summary>
/// 生产日期
/// </summary>
public DateTime ProductDate { set; get; }
}
}