我是LINQ的新手,有一个简单的语句,可以选择两个日期之间的所有列。
我想对每一栏进行总结。我在获取sql语句时遇到了一些麻烦。
var PumaGoodProduct = (
from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
orderby item.ID descending
select item).Sum();
以下我得到一个错误说.ProductionHour不包含总和的定义。
我也试过这个
var PumaGoodProduct = (
from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
orderby item.ID descending
select item).Take(1);
对此有任何想法都非常感谢。
我想选择item.MachineTotal和item.MachineClocks都是整理
答案 0 :(得分:1)
如果你只是做一笔钱,你不需要订购。此外,您还需要选择要汇总的属性。
var PumaGoodProduct = (
from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.MySumProperty);
将MySumProperty
替换为您要求总和的任何属性。
答案 1 :(得分:0)
由于您计算了两个总和,因此在单个返回类型中组合它们的一种方法是:
var PumaGoodProduct =
new
{
MachineTotalSum =
(from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.MachineTotal),
MachineClocksSum =
(from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.MachineClocks),
};
答案 2 :(得分:0)
您希望从查询中针对列item.MachineTotal
和item.MachineClock
返回多个总和,您可以尝试以下操作。
var result = (from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift
&& item.ProductionHour <= EndDate
select new
{
SumMachineTotal = item.MachineTotal,
SumMachineClock = item.MachineClock
}).FirstOrDefault();
if(result != null)
{
Console.WriteLine("Machine Total Sum: {0}" , result.SumMachineTotal);
Console.WriteLine("Machine Clock Sum: {0}" , result.SumMachineClock);
}
您不需要orderby
,因为Sum
会计算总和而不管orderby
子句。
答案 3 :(得分:0)
我打算猜测一下。您希望获取给定MachineTotal
和MachineClocks
期内db.tbl_dppITHr
项中StartShift
项和EndDate
字段的总和。
你可以这样做:
var PumaGoodProduct = db.tbl_dppITHr
.Where(item => item.ProductionHour >= StartShift && item.ProductionHour <= EndDate)
.Aggregate(new { MachineTotalSum = 0, MachineClocksSum = 0 },
(sums, item) => new
{
MachineTotalSum = sums.MachineTotalSum + item.MachineTotal,
MachineClocksSum = sums.MachineClocksSum + item.MachineClocks
});
Console.WriteLine("MachineTotalSum : {0}", PumaGoodProduct.MachineTotalSum);
Console.WriteLine("MachineClocksSum : {0}", PumaGoodProduct.MachineClocksSum);