使用LINQ to SQL
我有我的编程如果有人输入生产全日C#程序,我计算了机器的(MU),这样,平均是分组:使用LINQ to SQL
Date | Part Number | Mold Num | Machine Num | MU
2/12/2016 | 1185-5B8 | 6580 | 12 | .428
2/12/2016 | 2249300 | 7797 | 36 | .271
2/12/2016 | 146865 | 5096789 | 12 | .260
2/16/2016 | 123456 | 7787 | 56 | .354
2/16/2016 | 123456 | 787 | 54 | .45
2/16/2016 | 123456 | 777 | 56 | .799
2/16/2016 | 123456 | 87 | 54 | .611
如何我会组都是在同一个表像这样的数据:
2/12/2016 2/16/2016
Machine Num. | MU Machine Num. | MU
12 | 34.4% 54 | 53.0%
36 | 27.1% 56 | 57.6%
表,一切都是在被称为[MU报告]
编辑:
MU =可用时间Ran/Time。所以我所做的就是计算每个单独条目的MU,以便稍后取平均值。
类(样品)每台机器每天平均:
public class MachineData
{
public DateTime Date { get; set; }
public string PartNumber { get; set; }
public int MoldNum { get; set; }
public int MachineNum { get; set; }
public decimal MU { get; set; }
}
查询:
var query =
dbItems
.GroupBy(x => new { x.Date, x.MachineNum })
.Select(x => new
{
Date = x.Key.Date,
MachineNum = x.Key.MachineNum,
AverageMU = x.Average(i => i.MU * 100)
})
.ToList();
GroupBy(x => new { x.Date, x.MachineNum })
在这里您可以将所有项目按日期和MachineNum
.Select(x => new
{
Date = x.Key.Date,
MachineNum = x.Key.MachineNum,
AverageMU = x.Average(i => i.MU * 100)
// Instead of x.Average you may used other functions like: Count, Any etc.
})
以下Select
将创建一个匿名类型将包含:Date
,MachineNum
和MU * 100
平均得到的百分比。
PS:我用的λ,而不是纯LINQ的,因为我真的不喜欢LINQ
由于平均是基于一天只有和分组基于两个日期和机号,则需要级别的分组:
一个。计算每天的总数。
b。计算基于上述总计
var dailyTotals = sampleData.GroupBy(x => x.Date)
.ToLookup(x => x.Key, x => x.Sum(y => y.MU));
var groupedData = (from m in sampleData
group m by new { m.Date, m.MachineNum } into grp
let dailyTotal = dailyTotals[grp.Key.Date].FirstOrDefault()
let dailyMachineTotal = grp.Sum(x => x.MU)
select new
{
Date = grp.Key.Date,
MachineNumber = grp.Key.MachineNum,
MU = (dailyMachineTotal/dailyTotal) * 100
}).ToList();
但是你按日期分组,因为没有必要计算每日总数,因为所有由组提供的项目将有同一天变量'grp' –
我觉得这只是增加了一个不需要的步骤。单独取出所有机器的平均值并按照上面的方法进行操作应得出相同的答案。 – JCM
@LeandroSoares但是我们可能在同一天的grp之外有物品,因为它们有不同的机器编号。请记住,我们在这里分为两个字段。 – user3185569
工作,你应该张贴什么你试图做的,索要小费,如果你不能进行任何更多的自己。你不应该让别人去做你的工作。 –
这太宽泛了:“有太多可能的答案,或者对于这种格式,好的答案会太长,请添加详细信息以缩小答案集或隔离几个段落中可以回答的问题。” –
@LeandroSoares我不知道如何做到这一点,因为我所看到的所有事情都是通过2张表来完成的,这是我实际上必须做的过于简化的版本。我只想要一个基本的理解,以便完成剩下的工作。 – JCM