写在前面

最近一直在弄统计的内容,和统计相关的操作,就需要用到了,而有些在数据库中操作起来非常不方便,没办法就用c#中的linq来实现了。

代码

一个例子

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 = ; i < ; i++)
{
float iran = r.Next(, );
Product pro = new Product() {
ID = i + ,
Name = "宝马" + i.ToString(),
Price = iran * ,
ProductDate = DateTime.Now.AddDays(i) };
Product pro2 = new Product() {
ID = i + ,
Name = "宝马" + i.ToString(),
Price = iran * ,
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; } }
}

测试结果

总结

在写group的时候,第一上手就出错了,很久没用linq中的group,忘记怎么使用了,竟然还有个into,跟sql语法差别就在这里。这里练习一下,做个备忘。

参考

http://www.cnblogs.com/wuchao/archive/2012/12/25/2832744.html

linq入门系列导航

Linq之求和,平均值,最大值,最小值的更多相关文章

  1. 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值

    不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...

  2. C# 求链表 list 中 属性的 最大值 最小值

    获取链表List中对象属性最大值最小值(Max,Min)的方法: 1.创建一个类,类中有一个属性A /// <summary> /// 用于测试属性的类 /// </summary& ...

  3. js求最大值最小值

    比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,代码如下: <html> <head> <meta charset=&qu ...

  4. Tunnel Warfare (区间合并|最大值最小值巧妙方法)

    Tunnel Warfare http://acm.hdu.edu.cn/showproblem.php?pid=1540 Time Limit: 4000/2000 MS (Java/Others) ...

  5. java8 stream取出 最大值/最小值

    注:转载请注明出处!!! 这里直接用取出多个对象中某个值 最大/最小 来进行举例 直接看代码 /** * 时间测试类 */ class TimeTest { private Date time; pu ...

  6. html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形

     html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  7. C++数组或vector求最大值最小值

    可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...

  8. php三目运算计算三个数最大值最小值

    文章地址:https://www.cnblogs.com/sandraryan/ $x = 10; $y = 45; $z = 3; //求出三个数字中最大值最小值 //先比较x y,如果x> ...

  9. C#Linq之求和,平均值,最大值,最小值

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

随机推荐

  1. 百度地图简单使用——添加折线,圆形等(html,js)

    地图覆盖物概述 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线和多边形和圆).信息窗口等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 地图A ...

  2. 记一次linux服务器问题处理过程

    本周二的时候,涛哥找我,说明了一件事,在安装ganglia的时候,发生的一个问题. 在一台suse 10 sp1的服务器上,安装ganglia的一个依赖包,libconfuse.rpm,安装完成之后, ...

  3. 电磁兼容设计经验(转载 原文电子科技大学硕士毕业论文DDS扩频技术研究)

    2 Corinthians 1:3-4“[Praise to the God of All Comfort] Praise be to the God and Father of our Lord J ...

  4. 分享一个Fluent风格的邮件发送封装类

    C#中用SmtpClient发邮件很简单,闲着无事,简单封装一下 IEmailFactory public interface IEmailFactory { IEmailFactory SetHos ...

  5. 边工作边刷题:70天一遍leetcode: day 85-1

    Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历.而根据BST,可以只走正确方向 如果不检查right子树,可以从ro ...

  6. 3D跑酷遇到的问题

    前言 项目名称:3D跑酷项目 写作目地:使用Asset Server进行多人协作开发过程中,记录遇到的问题 问题1:UIAtlas无法自动更新 描述:NGUI的Atlas图集(图片)无法自动更新 后果 ...

  7. Android Handler处理机制 ( 三 ) ——Handler,Message,Looper,MessageQueue

    在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handle ...

  8. 2703 奶牛代理商 XII

    2703 奶牛代理商 XII  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 小徐从美国回来后,成为了USAC ...

  9. 06Spring_使用注解配置bean对象

    Spring注解开发需要jar包 和 xml开发 一样的 ! 第一步: 新建项目, 导入jar包(就是前一篇文章里面的那几个核心jar包) 第二步: 在需要spring创建对象类上面 添加@Compo ...

  10. android Camera 如何判断当前使用的摄像头是前置还是后置

    现在 android 平台的智能手机一般都标配有两颗摄像头.在 Camera 中都存在摄像头切换的功能. 并且有一些功能前后置摄像头上会有所不同.譬如人脸检测,人脸识别,自动对焦,闪光灯等功能, 如果 ...