Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用LINQ C#计算MTBF_C#_Linq - Fatal编程技术网

用LINQ C#计算MTBF

用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

我的数据按以下格式列出(时间值相同,用于示例)

我必须找到此应用程序的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);

我认为类似的东西可能会起作用

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();