linq 常用语句
自己练习的
switch (productDataAnalysisQuery.DataType)
{
case :
var data = (from hp in GPEcontext.hbl_product
join hcim in
from hci in GPEcontext.hbl_change_info
where hci.LotNum == && hci.ChangeData <
&& hci.CreatedTime >= beginDate && hci.CreatedTime <= endDate
group hci by new { hci.ProductId } into G
select new
{
ProductId = G.Key.ProductId,
Amount = G.Sum(item => Math.Abs(item.ChangeData.Value))
} on hp.id equals hcim.ProductId
orderby hcim.Amount descending
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hcim.Amount
}).Take();
pageModel.Models = data.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false);
break;
case :
var data2 = (from hp in GPEcontext.hbl_product
join hcim in
from hci in GPEcontext.hbl_change_info
where hci.LotNum == && hci.ChangeData <
&& hci.CreatedTime >= beginDate && hci.CreatedTime <= endDate
group hci by new { hci.ProductId } into G
select new
{
ProductId = G.Key.ProductId,
Amount = G.Sum(item => Math.Abs(item.ChangeData.Value))
} on hp.id equals hcim.ProductId
orderby hcim.Amount
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hcim.Amount
}).Take();
pageModel.Models = data2.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false);
break;
case :
var data3 = (from hp in GPEcontext.hbl_product
join hcim in
from hci in GPEcontext.hbl_change_info
where hci.LotNum == && hci.ChangeData <
&& hci.CreatedTime >= beginDate && hci.CreatedTime <= endDate
group hci by new { hci.ProductId } into G
select new
{
ProductId = G.Key.ProductId,
Amount = G.Count()
} on hp.id equals hcim.ProductId
orderby hcim.Amount descending
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hcim.Amount
}).Take();
pageModel.Models = data3.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false); break;
case :
var data4 = (from hp in GPEcontext.hbl_product
join hcim in
from hci in GPEcontext.hbl_change_info
where hci.LotNum == && hci.ChangeData <
&& hci.CreatedTime >= beginDate && hci.CreatedTime <= endDate
group hci by new { hci.ProductId } into G
select new
{
ProductId = G.Key.ProductId,
Amount = G.Count()
} on hp.id equals hcim.ProductId
orderby hcim.Amount
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hcim.Amount
}).Take();
pageModel.Models = data4.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false); break;
case :
var data5 = (from hp in GPEcontext.hbl_product
join hs in
from hps2 in GPEcontext.hbl_product_stock
join p in
from hps in GPEcontext.hbl_product_stock
group hps by new { hps.ProductID } into G
select new
{
ProductId = G.Key.ProductID,
CreatedTime = G.Max(p => p.CreatedTime)
}
on new { A = hps2.ProductID, B = hps2.CreatedTime } equals new { A = p.ProductId, B = p.CreatedTime }
select new
{
ProductId = hps2.ProductID,
Amount = hps2.Stock
}
on hp.id equals hs.ProductId
orderby hs.Amount descending
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hs.Amount.Value
}).Take();
pageModel.Models = data5.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false); break;
case :
var data6 = (from hp in GPEcontext.hbl_product
join hs in
from hps2 in GPEcontext.hbl_product_stock
join p in
from hps in GPEcontext.hbl_product_stock
group hps by new { hps.ProductID } into G
select new
{
ProductId = G.Key.ProductID,
CreatedTime = G.Max(p => p.CreatedTime)
}
on new { A = hps2.ProductID, B = hps2.CreatedTime } equals new { A = p.ProductId, B = p.CreatedTime }
select new
{
ProductId = hps2.ProductID,
Amount = hps2.Stock
}
on hp.id equals hs.ProductId
orderby hs.Amount
select new ProductDataAnalysisodel
{
ProductName = hp.ProductName,
ProductCode = hp.ProductCode,
Amount = hs.Amount.Value
}).Take();
pageModel.Models = data6.FindBy(item => true, productDataAnalysisQuery.PageNo, productDataAnalysisQuery.PageSize, out total, item => item.Amount, false); break;
}
Linq使用Group By
.简单形式: var q =
from p in db.Products
group p by p.CategoryID into g
select g;
语句描述:Linq使用Group By按CategoryID划分产品。 说明:from p in db.Products 表示从表中将产品对象取出来。group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最后select时,只能select g。 .最大值 var q =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
MaxPrice = g.Max(p => p.UnitPrice)
};
语句描述:Linq使用Group By和Max查找每个CategoryID的最高单价。 说明:先按CategoryID归类,判断各个分类产品中单价最大的Products。取出CategoryID值,并把UnitPrice值赋给MaxPrice。 .最小值 var q =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
MinPrice = g.Min(p => p.UnitPrice)
};
语句描述:Linq使用Group By和Min查找每个CategoryID的最低单价。 说明:先按CategoryID归类,判断各个分类产品中单价最小的Products。取出CategoryID值,并把UnitPrice值赋给MinPrice。 .平均值 var q =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
AveragePrice = g.Average(p => p.UnitPrice)
};
语句描述:Linq使用Group By和Average得到每个CategoryID的平均单价。 说明:先按CategoryID归类,取出CategoryID值和各个分类产品中单价的平均值。 .求和 var q =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
TotalPrice = g.Sum(p => p.UnitPrice)
};
今天遇到了一个问题,操作一个DataTable,DataTable的表结构如下:
- Id,Name,Math,Chinese
此表对应的数据如下图:

要求合并后的效果如下图:

自己就想到了for循环的实现办法,也想用Linq可是不知道怎么写。后来msdn了一下,写出了如下的代码:
var query = from c in ds.Tables[].AsEnumerable()
group c by c.Field<int>("Name")
into s
select new
{
ID = s.Select(m => m.Field<int>("ID").ToString()),
Name = s.Select(m => m.Field<string>("Name").ToString()),
Math = s.Sum(p => p.Field<decimal>("Math")),
Chinese = s.Sum(p => p.Field<decimal>("Chinese"))
}; //法一:
DataTable tbl = tableA1.Clone();
query.ToList().ForEach(p => tbl.Rows.Add(p.pingming, p.guige,p.biaohao,p.shuliang));
//法二:
DataTable dtss = new DataTable();
dtss.Columns.Add(new DataColumn("ID", typeof(string)));
dtss.Columns.Add(new DataColumn("Name", typeof(string)));
dtss.Columns.Add(new DataColumn("Math", typeof(string)));
dtss.Columns.Add(new DataColumn("Chinese", typeof(string)));
query.ToList().ForEach(p => dtss.Rows.Add(p.ID, p.Name, p.Math, p.Chinese ));
注意:linq结果可以用AsEnumerable立刻执行查询以及ToList ToArray转换成数组/集合
linq 常用语句的更多相关文章
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
- mysql常用语句总结
1.创建语句 CREATE DATABASE database_name //创建数据库 //删表 DROP TABLE IF EXISTS `t_social_user_extend`; //建表C ...
- JS常用语句
JavaScript常用语句 1.document.write(""); 输出语句 2.JS中的注释为 // 3.传统的HTML文档顺序是: document-& ...
- velocity常用语句速查表
velocity常用语句 * 变量定义 #set($directoryRoot = "www" ) * #if($!list.size() != 0) //判断list不为空 #f ...
- MySQL 常用语句 (汇集)
原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库 mysql->show databases; 创建数据库 mysql-> ...
- mysql数据库常用语句2
关于mysql常用语句的整理,上一篇涉及到ddl.dml以及一些简单的查询语句. 1:mysql分页查询 select * from table_name limit 5,10; 从下标为5元素查 ...
- mysqldump的常用语句及各参数详解
mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...
- mysql学习一 常用语句
操作系统为windows 1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...
- mo系统常用语句
mo系统常用语句 一.总结 一句话总结: 1.语言:双语设置(繁体,英语)语句? {:chooseLanguage("確定要刪除么","Are you sure you ...
随机推荐
- ssh公钥免密码登录
1,生成公钥 ssh-keygen -t rsa 2,上传至服务器 将个人电脑的公钥添加到服务器 cat id_rsa.pub >> ~/.ssh/authorized_keys 3,本地 ...
- 低噪声APD偏置电路
低噪声APD偏置电路 APD电源摘要:该电路产生并控制光通信中雪崩光电二极管(APD)的低噪声偏置电压.该可变电压通过控制APD的雪崩增益,优化光纤接收器的灵敏度特性.该电路采用低噪声.固定频率PWM ...
- Java实现Internet地址获取
Java实现Internet地址获取 代码内容 输入域名输出IPV4地址 输入IP地址输出域名 支持命令行输入 支持交互式输入 代码实现 /* nslookup.java */ import java ...
- Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
1.安装好vbox,创建好虚拟机(红帽5.5),注意:VBOX全局设置VBOX磁盘的位置和备份位置 IP.hostname 规划: hostname ...
- CentOS安装Git实现多人同步开发
描 述 要开发一个"cms系统",有2个人分别是:晓飞, 盈月.要求使用Git来进行版本控制. 项目信息 版本控制:Git 项目名称:cms 开发人员:xiaofei,yingyu ...
- SqlServer正在执行的sql语句
SELECT [Spid] = session_Id ,ecid ,[Database] = DB_NAME(sp.dbid) ,[User] = nt_username ,[Status] = er ...
- CS小分队第一阶段冲刺站立会议(5月8日)
昨日成果:优化了扫雷游戏,解决了界面随格子数改变却不能缩小的bug,另外改写了程序,能使用户在点下第一个雷时再生成代码,防止第一步踩到地雷. 遇到的困难:主要就是考虑扫雷需不需要有一个存档,这个存档用 ...
- windows和linux环境下制作U盘启动盘
新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...
- [转载]linux sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- Python 读写excel数据
读取excel 文件的数据 import csv with open('D:/mystuff/11.csv','r') as f: reader = csv.reader(f) for row in ...