我的數據在下面的格式列出的,(該時間值是相同的,用於樣品)使用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