我的数据在下面的格式列出的,(该时间值是相同的,用于样品)使用LINQ C#以计算MTBF
ID Result StartTime EndTime
1 Fail 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
2 Fail 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
3 Pass 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
4 Fail 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
5 Fail 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
6 Pass 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
7 Fail 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
8 Pass 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
9 pass 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
10 pass 4/2/2013 1:17:29 PM 4/2/2013 1:19:30 PM
我必须找到MTBF此使用Σ(T1, T2,... Tn)/ n其中n是故障的数目,T1,T2,... Tn是指发生故障之前的正常运行时间。截至目前,我已经能够计算所经过的时间每次迭代,
using (DatabaseEntities entities = new DatabaseEntities())
{
var result = entities.ExecutionDetails.Select(p => p);
foreach (var p in result)
{
if (p.StartTime.HasValue && p.EndTime.HasValue)
{
var duration = (p.EndTime.Value - p.StartTime.Value).ToString("c");
Console.WriteLine("Duration" + duration);
}
}
}
你能帮我找到正确的方法和查询使用捕捉相关数据,以便计算MTBF。 谢谢。
更新的代码
var results = entities.TestExecutionDetails.ToList();
var failures = results.Where(p => p.Result == "Fail").Select(p => p);
foreach(var p in failures)
{
if (p.StartTime.HasValue && p.EndTime.HasValue)
{
var elapsedduration = elapsedduration + (p.EndTime.Value - p.StartTime.Value).ToString("c");
}
var mtbf = elapsedduration/failures.Count();
最后更新
TimeSpan elaspsedduration = new TimeSpan(0);
........
.....
foreach (var p in uptime)
{
Console.WriteLine("Uptime is" + uptime);
if (p.StartTime.HasValue && p.EndTime.HasValue)
{
elaspsedduration += (p.EndTime.Value - p.StartTime.Value);
}
var mtbf = elaspsedduration.TotalSeconds/failures;
Console.WriteLine("MTBF Value is " + mtbf);
MTBF:平均故障间隔时间? – 2013-04-04 12:01:02
是的,平均故障间隔时间 – Archer 2013-04-05 04:51:36