用LINQ C#计算MTBF
我的数据按以下格式列出(时间值相同,用于示例) 我必须找到此应用程序的MTBF∑ (T1,T2,…Tn)/n其中n是故障的数量,T1,T2,…Tn是故障发生前的正常运行时间。到目前为止,我已经能够计算出每次迭代所用的时间用LINQ C#计算MTBF,c#,linq,C#,Linq,我的数据按以下格式列出(时间值相同,用于示例) 我必须找到此应用程序的MTBF∑ (T1,T2,…Tn)/n其中n是故障的数量,T1,T2,…Tn是故障发生前的正常运行时间。到目前为止,我已经能够计算出每次迭代所用的时间 using (DatabaseEntities entities = new DatabaseEntities()) { var result = entities.ExecutionDetails.Select(p => p); foreach (var
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);
我认为类似的东西可能会起作用
var results = entities.ExecutionDetails.ToList();
var failures = results.Where(p => p.Result == "Fail");
var sigmaDiff = failures.Sum(p => p.EndTime.Subtract(p.StartTime));
var mtbf = sigmaDiff/failures.Count();
MTBF:平均无故障时间?是的,平均无故障时间谢谢回答。我已经根据您的输入修改了代码。你能帮我修复我现在正在设计的错误吗,“不能在声明之前使用局部变量Expased duration”。听起来变量'Expased_duration'没有声明或初始化。这个变量是否存在于您的方法中,并且您给了它一个值吗?我需要找到时间差的总和,这就是我要做的,如果我在开始时设置var elapsedduration=0,我会得到exceptio,Dbathmetic表达式参数必须具有数字公共类型。
var results = entities.ExecutionDetails.ToList();
var failures = results.Where(p => p.Result == "Fail");
var sigmaDiff = failures.Sum(p => p.EndTime.Subtract(p.StartTime));
var mtbf = sigmaDiff/failures.Count();