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 = ; 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之求和,平均值,最大值,最小值的更多相关文章
- 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值
不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...
- C# 求链表 list 中 属性的 最大值 最小值
获取链表List中对象属性最大值最小值(Max,Min)的方法: 1.创建一个类,类中有一个属性A /// <summary> /// 用于测试属性的类 /// </summary& ...
- js求最大值最小值
比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,代码如下: <html> <head> <meta charset=&qu ...
- Tunnel Warfare (区间合并|最大值最小值巧妙方法)
Tunnel Warfare http://acm.hdu.edu.cn/showproblem.php?pid=1540 Time Limit: 4000/2000 MS (Java/Others) ...
- java8 stream取出 最大值/最小值
注:转载请注明出处!!! 这里直接用取出多个对象中某个值 最大/最小 来进行举例 直接看代码 /** * 时间测试类 */ class TimeTest { private Date time; pu ...
- html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形
html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- C++数组或vector求最大值最小值
可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...
- php三目运算计算三个数最大值最小值
文章地址:https://www.cnblogs.com/sandraryan/ $x = 10; $y = 45; $z = 3; //求出三个数字中最大值最小值 //先比较x y,如果x> ...
- C#Linq之求和,平均值,最大值,最小值
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
随机推荐
- 重载 && 重载递增递和减运算符
class Rule { private: double m_Length; public: explicit Rule(double lg = 1.0) :m_Length{ lg }{} Rule ...
- 获取bing每日图片
http://global.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US 其中idx表示倒数第几张图片 ...
- 标准库shared_ptr智能指针的实现
目前测试功能正常.若有不完善的地方在改进吧.时候不早了睡觉去,哎,翘课会被抓,不冒险了.晚安全世界O(∩_∩)O /****************************************** ...
- 我所理解的 惠普云 (HP Cloud)
HP (惠普)于2014年5月27日宣布了它的新的云产品线 HP Helion,并宣布在接下来的两年时间内向该产品线投资10亿美金.应该说这是一笔很大的投入,充分显示了HP 在云这个领域的决心.本文试 ...
- Geoserver发布Oracle数据
在Geoserver安装包中,默认是不能发布Oracle数据库里的数据的,只能发布postgis.shp等数据,详细如截图: 如果想发布oracle数据,得安装相应版本的关于oracle数据源的插件, ...
- USACO section1.2 Transformation
/* ID: vincent63 LANG: C TASK: transform */ #include <stdio.h> #include<stdlib.h> #inclu ...
- ZBrush中的Clip剪切笔刷怎么快速运用
Clip剪切笔刷可以对模型网格进行剪切操作,也可以叫做剪切笔刷.接下来看一下Clip切割笔刷在ZBrush中是如何使用的. 查看更多内容请直接前往:http://www.zbrushcn.com/ji ...
- [转载]ExtJs4 笔记(4) Ext.XTemplate 模板
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- ZOJ 2301 / HDU 1199 Color the Ball 离散化+线段树区间连续最大和
题意:给你n个球排成一行,初始都为黑色,现在给一些操作(L,R,color),给[L,R]区间内的求染上颜色color,'w'为白,'b'为黑.问最后最长的白色区间的起点和终点的位置. 解法:先离散化 ...