DataTable dt = SQLLayer.Get工作量統計(beginDate, endDate);
var querySum = from t in dt.AsEnumerable()
group t by t.Field< string>( " 庫房 ")
into g
select new
{
_庫房 = g.Key,
_品次_入庫 = g.Sum(t => t.Field< decimal>( " 品次_入庫 ")),
_品種_入庫 = g.Sum(t => t.Field< decimal>( " 品種_入庫 ")),
_金額_入庫 = g.Sum(t => t.Field< decimal>( " 金額_入庫 ")),
_品次_出庫 = g.Sum(t => t.Field< decimal>( " 品次_出庫 ")),
_品種_出庫 = g.Sum(t => t.Field< decimal>( " 品種_出庫 ")),
_金額_出庫 = g.Sum(t => t.Field< decimal>( " 金額_出庫 ")),
_品種_現存 = g.Sum(t => t.Field< decimal>( " 品種_現存 ")),
_金額_現存 = g.Sum(t => t.Field< decimal>( " 金額_現存 "))
};
DataTable newDt = new DataTable();
DataRow newRow = null;
newDt.Columns.Add( " 庫房 ", typeof( string));
newDt.Columns.Add( " 品次_入庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_入庫 ", typeof( decimal));
newDt.Columns.Add( " 金額_入庫 ", typeof( decimal));
newDt.Columns.Add( " 品次_出庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_出庫 ", typeof( decimal));
newDt.Columns.Add( " 金額_出庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_現存 ", typeof( decimal));
newDt.Columns.Add( " 金額_現存 ", typeof( decimal));
foreach ( var query in querySum)
{
newRow = newDt.NewRow();
newRow[ " 庫房 "] = query._庫房;
newRow[ " 品次_入庫 "] = query._品次_入庫;
newRow[ " 品種_入庫 "] = query._品種_入庫;
newRow[ " 金額_入庫 "] = query._金額_入庫;
newRow[ " 品次_出庫 "] = query._品次_出庫;
newRow[ " 品種_出庫 "] = query._品種_出庫;
newRow[ " 金額_出庫 "] = query._金額_出庫;
newRow[ " 品種_現存 "] = query._品種_現存;
newRow[ " 金額_現存 "] = query._金額_現存;
newDt.Rows.Add(newRow);
}
var querySum = from t in dt.AsEnumerable()
group t by t.Field< string>( " 庫房 ")
into g
select new
{
_庫房 = g.Key,
_品次_入庫 = g.Sum(t => t.Field< decimal>( " 品次_入庫 ")),
_品種_入庫 = g.Sum(t => t.Field< decimal>( " 品種_入庫 ")),
_金額_入庫 = g.Sum(t => t.Field< decimal>( " 金額_入庫 ")),
_品次_出庫 = g.Sum(t => t.Field< decimal>( " 品次_出庫 ")),
_品種_出庫 = g.Sum(t => t.Field< decimal>( " 品種_出庫 ")),
_金額_出庫 = g.Sum(t => t.Field< decimal>( " 金額_出庫 ")),
_品種_現存 = g.Sum(t => t.Field< decimal>( " 品種_現存 ")),
_金額_現存 = g.Sum(t => t.Field< decimal>( " 金額_現存 "))
};
DataTable newDt = new DataTable();
DataRow newRow = null;
newDt.Columns.Add( " 庫房 ", typeof( string));
newDt.Columns.Add( " 品次_入庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_入庫 ", typeof( decimal));
newDt.Columns.Add( " 金額_入庫 ", typeof( decimal));
newDt.Columns.Add( " 品次_出庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_出庫 ", typeof( decimal));
newDt.Columns.Add( " 金額_出庫 ", typeof( decimal));
newDt.Columns.Add( " 品種_現存 ", typeof( decimal));
newDt.Columns.Add( " 金額_現存 ", typeof( decimal));
foreach ( var query in querySum)
{
newRow = newDt.NewRow();
newRow[ " 庫房 "] = query._庫房;
newRow[ " 品次_入庫 "] = query._品次_入庫;
newRow[ " 品種_入庫 "] = query._品種_入庫;
newRow[ " 金額_入庫 "] = query._金額_入庫;
newRow[ " 品次_出庫 "] = query._品次_出庫;
newRow[ " 品種_出庫 "] = query._品種_出庫;
newRow[ " 金額_出庫 "] = query._金額_出庫;
newRow[ " 品種_現存 "] = query._品種_現存;
newRow[ " 金額_現存 "] = query._金額_現存;
newDt.Rows.Add(newRow);
}
private
void btnLinqTest__Click(
object sender, EventArgs e)
{
DataTable vtblSeqBase = this.DM.bdsSingle._mpDataTable;
// 1. GroupBy 統計
var query =
from q in vtblSeqBase.AsEnumerable()
group q by q.Field< string>( " MachineType ") into r
select new
{
_qMachType = r.Key,
_qCount = r.Count()
};
using (DataTable vtblCount = new DataTable())
{
DataRow vNewRow = null;
vtblCount.Columns.Add( " MachType ", typeof( string));
vtblCount.Columns.Add( " Count ", typeof( int));
foreach ( var vq in query)
{
vNewRow = vtblCount.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " Count "] = vq._qCount;
vtblCount.Rows.Add(vNewRow);
}
// vtblCount.mmViewForRD();
}
// 2. Distinct用法 XXXTestOk 2011-07-18
var d = ( from DataRow vRow in vtblSeqBase.Rows
select new { _MachType = vRow[ " MachineType "] }).Distinct();
using (DataTable vtblDistinct = new DataTable())
{
DataRow vNewRow = null;
vtblDistinct.Columns.Add( " MachType ", typeof( string));
vtblDistinct.Columns.Add( " Count ", typeof( int));
foreach ( var q in d)
{
vNewRow = vtblDistinct.NewRow();
vNewRow[ " MachType "] = q._MachType;
vtblDistinct.Rows.Add(vNewRow);
}
// vtblDistinct.mmViewForRD();
}
// DataTableExtensions.CopyToDataTable
// 3.
List< int> vListNum = new List< int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable< int> vDistNum = vListNum.Distinct();
foreach ( int n in vDistNum)
{
// MessageBox.Show("不重復的數值 =" + n.ToString());
}
// 4. Group By 一個字段
var querySum =
from q in vtblSeqBase.AsEnumerable()
group q by q.Field< string>( " MachineType ") into g
select new
{
_qMachType = g.Key,
_qSamTotal = g.Sum(q => q.Field< decimal>( " SamValue "))
};
using (DataTable vtblSAMTotal = new DataTable())
{
DataRow vNewRow = null;
vtblSAMTotal.Columns.Add( " MachType ", typeof( string));
vtblSAMTotal.Columns.Add( " SAMTotal ", typeof( decimal));
foreach ( var vq in querySum)
{
vNewRow = vtblSAMTotal.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " SAMTotal "] = vq._qSamTotal;
vtblSAMTotal.Rows.Add(vNewRow);
}
// vtblSAMTotal.mmViewForRD();
}
// 5. Group By 多個字段 GBN = Group By NField
var queryGBN =
from q in vtblSeqBase.AsEnumerable()
group q by new {機器代碼=q.Field< string>( " MachineType "), 工序代碼=q.Field< string>( " SeqCode ") }
into g
select new
{
_qMachType = g.Key,
_qSamTotal = g.Sum(q => q.Field< decimal>( " SamValue ")),
_qSamAvg = g.Average(q => q.Field< decimal>( " SamValue "))
};
using (DataTable vtblSAMTotal = new DataTable())
{
DataRow vNewRow = null;
vtblSAMTotal.Columns.Add( " MachType ", typeof( string));
vtblSAMTotal.Columns.Add( " SeqCode ", typeof( string));
vtblSAMTotal.Columns.Add( " SAMTotal ", typeof( decimal));
vtblSAMTotal.Columns.Add( " SAMAvg ", typeof( decimal));
foreach ( var vq in queryGBN)
{
vNewRow = vtblSAMTotal.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " SeqCode "] = vq._qMachType;
vNewRow[ " SAMTotal "] = vq._qSamTotal;
vNewRow[ " SAMAvg "] = vq._qSamAvg;
vtblSAMTotal.Rows.Add(vNewRow);
}
vtblSAMTotal.mmViewForRD();
}
}
{
DataTable vtblSeqBase = this.DM.bdsSingle._mpDataTable;
// 1. GroupBy 統計
var query =
from q in vtblSeqBase.AsEnumerable()
group q by q.Field< string>( " MachineType ") into r
select new
{
_qMachType = r.Key,
_qCount = r.Count()
};
using (DataTable vtblCount = new DataTable())
{
DataRow vNewRow = null;
vtblCount.Columns.Add( " MachType ", typeof( string));
vtblCount.Columns.Add( " Count ", typeof( int));
foreach ( var vq in query)
{
vNewRow = vtblCount.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " Count "] = vq._qCount;
vtblCount.Rows.Add(vNewRow);
}
// vtblCount.mmViewForRD();
}
// 2. Distinct用法 XXXTestOk 2011-07-18
var d = ( from DataRow vRow in vtblSeqBase.Rows
select new { _MachType = vRow[ " MachineType "] }).Distinct();
using (DataTable vtblDistinct = new DataTable())
{
DataRow vNewRow = null;
vtblDistinct.Columns.Add( " MachType ", typeof( string));
vtblDistinct.Columns.Add( " Count ", typeof( int));
foreach ( var q in d)
{
vNewRow = vtblDistinct.NewRow();
vNewRow[ " MachType "] = q._MachType;
vtblDistinct.Rows.Add(vNewRow);
}
// vtblDistinct.mmViewForRD();
}
// DataTableExtensions.CopyToDataTable
// 3.
List< int> vListNum = new List< int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable< int> vDistNum = vListNum.Distinct();
foreach ( int n in vDistNum)
{
// MessageBox.Show("不重復的數值 =" + n.ToString());
}
// 4. Group By 一個字段
var querySum =
from q in vtblSeqBase.AsEnumerable()
group q by q.Field< string>( " MachineType ") into g
select new
{
_qMachType = g.Key,
_qSamTotal = g.Sum(q => q.Field< decimal>( " SamValue "))
};
using (DataTable vtblSAMTotal = new DataTable())
{
DataRow vNewRow = null;
vtblSAMTotal.Columns.Add( " MachType ", typeof( string));
vtblSAMTotal.Columns.Add( " SAMTotal ", typeof( decimal));
foreach ( var vq in querySum)
{
vNewRow = vtblSAMTotal.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " SAMTotal "] = vq._qSamTotal;
vtblSAMTotal.Rows.Add(vNewRow);
}
// vtblSAMTotal.mmViewForRD();
}
// 5. Group By 多個字段 GBN = Group By NField
var queryGBN =
from q in vtblSeqBase.AsEnumerable()
group q by new {機器代碼=q.Field< string>( " MachineType "), 工序代碼=q.Field< string>( " SeqCode ") }
into g
select new
{
_qMachType = g.Key,
_qSamTotal = g.Sum(q => q.Field< decimal>( " SamValue ")),
_qSamAvg = g.Average(q => q.Field< decimal>( " SamValue "))
};
using (DataTable vtblSAMTotal = new DataTable())
{
DataRow vNewRow = null;
vtblSAMTotal.Columns.Add( " MachType ", typeof( string));
vtblSAMTotal.Columns.Add( " SeqCode ", typeof( string));
vtblSAMTotal.Columns.Add( " SAMTotal ", typeof( decimal));
vtblSAMTotal.Columns.Add( " SAMAvg ", typeof( decimal));
foreach ( var vq in queryGBN)
{
vNewRow = vtblSAMTotal.NewRow();
vNewRow[ " MachType "] = vq._qMachType;
vNewRow[ " SeqCode "] = vq._qMachType;
vNewRow[ " SAMTotal "] = vq._qSamTotal;
vNewRow[ " SAMAvg "] = vq._qSamAvg;
vtblSAMTotal.Rows.Add(vNewRow);
}
vtblSAMTotal.mmViewForRD();
}
}