博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq之求和,平均值,最大值,最小值
阅读量:6890 次
发布时间:2019-06-27

本文共 2703 字,大约阅读时间需要 9 分钟。

写在前面

最近一直在弄统计的内容,和统计相关的操作,就需要用到了,而有些在数据库中操作起来非常不方便,没办法就用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
list = new List
(); 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(); } } ///
/// 产品类 /// class Product { ///
/// 产品id /// public int ID { set; get; } ///
/// 产品名称 /// public string Name { set; get; } ///
/// 产品单价 /// public double Price { set; get; } ///
/// 生产日期 /// public DateTime ProductDate { set; get; } }}

测试结果

总结

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

参考

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

 

转载于:https://www.cnblogs.com/wolf-sun/p/4483134.html

你可能感兴趣的文章
python获取昨日日期
查看>>
海康威视 - 萤石云开放平台 js 版
查看>>
关于分销平台
查看>>
剑指offer---12-**--数值的整数次方
查看>>
PAT - L2-010. 排座位(并查集)
查看>>
Python 学习笔记 - 线程(线程锁,信标,事件和条件)
查看>>
大数据技术服务商个推获4亿人民币D轮融资
查看>>
Git的详细使用教程
查看>>
iOS实现类似苹果手机原生的锁屏界面(数字密码)
查看>>
[vue] 表单输入格式化,中文输入法异常
查看>>
Observer观察者模式与OCP开放-封闭原则
查看>>
如何搭建高级工程师知识框架?推荐两种方式
查看>>
BAT的医疗春秋大梦
查看>>
Pulsar本地单机(伪)集群 (裸机安装与docker方式安装) 2.2.0
查看>>
利用H5的css3制作动画
查看>>
Android View 事件分发源码分析
查看>>
vue 2.0 - props
查看>>
RustCon Asia 实录 | Rust 在国内某视频网站的应用
查看>>
Vue遇上Analytics
查看>>
修改max_allowed_packet(允许执行的sql最大长度)
查看>>