【发布时间】:2014-02-17 09:52:55
【问题描述】:
我有以下 Linq 查询:
var qry = from Output in db.Outputs
join ShiftHours in db.ShiftHourses on Output.ShiftHour equals ShiftHours.ShiftHour
join ShiftData in db.ShiftDatas on Output.ShiftID equals ShiftData.ShiftID
where ShiftData.ShiftDate == date && ShiftData.Line == line
select new ProgressData()
{
CPM = ShiftData.CPM,
Target = ShiftData.Target,
CurrentOutput = db.Outputs.Sum(x=>x.Quantity),
PercentOfTarget = (db.Outputs.Sum(x=>x.Quantity) / ShiftData.Target) * 100
};
它几乎是在做我想做的事,但就目前而言,CurrentOutput lambda 表达式正在返回输出表的整个 Quantity 列的总和,因为我不确定如何添加“Where”子句以及总和函数(因此 PercentOfTarget 也不正确)。
where子句需要和第一个where子句一样(date和line是传递给方法的参数):
where ShiftData.ShiftDate == date && ShiftData.Line == line
谁能帮忙?
编辑:CurrentOutput 的说明。
在“输出”表中,给定的“ShiftData.ShiftDate”和“ShiftData.Line”组合可以有多个记录,所以我想计算一个“输出”表“数量”列值的总和指定 'ShiftDate' 和 'Line'
编辑:进一步澄清
这是来自输出表的一些示例数据(OutputID 是一个自增的 PK):
public class Output
{
[Key]
public int OutputId { get; set; }
public int ShiftID { get; set; }
public int Quantity { get; set; }
public int ShiftHour { get; set; }
public virtual ShiftData ShiftData { get; set; }
}
这是 ShiftData 表中的一些示例数据(ShiftID 是一个自动递增的 PK,随着更多行号的添加,每个日期将有多个记录):
public class ShiftData
{
[Key]
public int ShiftID { get; set; }
public DateTime ShiftDate { get; set; }
public string Line { get; set; }
public int CPM { get; set; }
public double Target { get; set; }
}
所以使用上面的示例数据,我正在尝试填充 ProgressData 对象:
public class ProgressData
{
public int CPM { get; set; }
public double Target { get; set; }
public int CurrentOutput { get; set; }
public double PercentOfTarget { get; set; }
}
根据示例数据,我希望我在 2014 年 2 月 13 日为第 1 行创建的 ProgressData 对象将按如下方式填充:
CPM = 5,目标 = 200,CurrentOutput = 120,PercentOfTarget = 60
【问题讨论】:
-
你能指定你想计算的电流输出吗?为什么必须是 SUM?
-
抱歉,我在最初的问题中没有说清楚。我已经更新了这个问题。希望现在这更有意义
-
因此,如果您有多个
Output对象具有相同的班次日期和行,那么您希望这些对象中的 每个 具有所有具有相同班次的对象数量的总和日期和线路? -
听起来你的查询中应该有一个
group ... into表达式。现在它对我来说没有意义。 -
对不起,没有。此查询的目标是创建一个新的 ProgressData 对象。此 ProgressData 对象包含 CurrentOutput。我想用给定班次日期和行的所有输出对象数量的总和填充 CurrentOutput。如果这有助于澄清,我可以发布对象和表格数据?
标签: linq lambda linq-to-entities