自己练习的
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的表结构如下:

  1. 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 常用语句的更多相关文章

  1. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

  2. mysql常用语句总结

    1.创建语句 CREATE DATABASE database_name //创建数据库 //删表 DROP TABLE IF EXISTS `t_social_user_extend`; //建表C ...

  3. JS常用语句

    JavaScript常用语句 1.document.write("");    输出语句 2.JS中的注释为   // 3.传统的HTML文档顺序是:     document-& ...

  4. velocity常用语句速查表

    velocity常用语句 * 变量定义 #set($directoryRoot = "www" ) * #if($!list.size() != 0) //判断list不为空 #f ...

  5. MySQL 常用语句 (汇集)

    原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库  mysql->show databases; 创建数据库  mysql-> ...

  6. mysql数据库常用语句2

    关于mysql常用语句的整理,上一篇涉及到ddl.dml以及一些简单的查询语句. 1:mysql分页查询 select * from table_name limit 5,10;   从下标为5元素查 ...

  7. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

  8. mysql学习一 常用语句

    操作系统为windows  1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...

  9. mo系统常用语句

    mo系统常用语句 一.总结 一句话总结: 1.语言:双语设置(繁体,英语)语句? {:chooseLanguage("確定要刪除么","Are you sure you ...

随机推荐

  1. Go字符串函数

    下面的代码中,列出了Go官方包中常见的字符串函数. package main import s "strings" import "fmt" //为打印函数起个 ...

  2. OC中的NSNumber、NSArray、NSString的常用方法

    和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...

  3. 实体框架 (EF) 入门 => 一、我该用哪个工作流?

    入门的参考资料:http://msdn.microsoft.com/zh-cn/data/ee712907 本篇的参考资料:http://msdn.microsoft.com/zh-cn/data/j ...

  4. 21.altera fpga 芯片中 pin 和 pad 区别

    在chip planner 中 ,看管脚时,会看到 pin 和pad 同时出现, 如 pin120/pad174 Bank 4 那么有什么区别? PIN指芯片封装好后的管脚,即用户看到的管脚: PAD ...

  5. Labview实现单边带信号调制(SSB)[移相法]

    Labview实现单边带信号调制(SSB)[移相法] 时域上的表达式为 调制器模型为 这个实验中需要相位偏移比较多,因为一共用了四个信号仿真器,一个是无偏移的调制信号,一个是偏移的调制信号,一个是无偏 ...

  6. iTween基础之CameraFade(摄像机淡入淡出)

    一.基础介绍:二.基础属性 原文地址: http://blog.csdn.net/dingkun520wy/article/details/50896420 一.基础介绍 CameraTexture: ...

  7. 程序调试手段之gdb, vxworks shell

    调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足 ...

  8. .NET Framework 4.5、4.5.1 和 4.5.2 中的新增功能

    .NET Framework 4.5.4.5.1 和 4.5.2 中的新增功能 https://msdn.microsoft.com/zh-cn/library/ms171868.aspx

  9. 01.JSP基础语法

        本章主要讲解Java Web与JSP的入门内容,适合有JSP或Java Web基础的读者学习. 1.Web应用与web.xml文件 (1)Java Web应用程序的结构     Java We ...

  10. hdu 3157 Crazy Circuits 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3157 You’ve just built a circuit board for your new r ...