当前位置: 首页 > news >正文

Linq之求和,平均值,最大值,最小值

写在前面

最近一直在弄统计的内容,和统计相关的操作,就需要用到了,而有些在数据库中操作起来非常不方便,没办法就用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 = 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; }

    }
}

测试结果

总结

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

参考

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

linq入门系列导航

 

相关文章:

  • Android 中文API (70) —— BluetoothDevice[蓝牙]
  • 动态数组排序实例
  • Nginx 反向代理、负载均衡与动静分离
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.9
  • 贪心 URAL 1303 Minimal Coverage
  • 使用JS或jQuery模拟鼠标点击a标签事件代码
  • 创建activiti工作流所需23张表
  • Spring Userservice-用户登录,登录数据库密码存储以及防止暴力破解
  • 复习之webview(观看张荣超视频)
  • Android6 Socket通信
  • 给列表项目添加动画
  • R(1)Mac OS 下安装R语言开发环境
  • PHP自动加载__autoload的工作机制
  • UISlide属性
  • 521Today
  • (三)从jvm层面了解线程的启动和停止
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • C# 免费离线人脸识别 2.0 Demo
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript-Array类型
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • mysql 5.6 原生Online DDL解析
  • PHP的Ev教程三(Periodic watcher)
  • vue:响应原理
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 什么是Javascript函数节流?
  • 说说动画卡顿的解决方案
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  •  一套莫尔斯电报听写、翻译系统
  • ​批处理文件中的errorlevel用法
  • ​虚拟化系列介绍(十)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2)MFC+openGL单文档框架glFrame
  • (20050108)又读《平凡的世界》
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Java数据结构)ArrayList
  • (Python) SOAP Web Service (HTTP POST)
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)php投票系统 毕业设计 121500
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ***测试-HTTP方法
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net Memory Profiler的使用举例
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .NET中两种OCR方式对比
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • /var/spool/postfix/maildrop 下有大量文件
  • ??javascript里的变量问题
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [Angular] 笔记 20:NgContent
  • [APIO2012] 派遣 dispatching