【发布时间】:2020-07-17 16:18:10
【问题描述】:
好的,现在我有一个 TasksGroup 对象,它有一个 Taches 列表。此 Taches 列表包含许多具有计算所需的属性 TaskDBA 和 TaskDuration 的任务。
但我被TaskDBA 指数部分卡住了,不知道如何继续。感谢您的帮助!
公式:
10 x Log [ SUM( TaskDuration x 10^(0.1 x TaskDBA) +...+ TaskDuration2 x 10^(0.1 x TaskDBA2)+....]
TaskDuration 是一个字符串,TaskDBA 是一个整数
持续时间最初是从格式为 HH:MM:SS 的输入框中获取的,所以我在这里所做的是我有方法 GetDuration 将持续时间转换为 TimeSpan 对象。
private TimeSpan GetDuration(string duration)
{
var value = duration.Split(':').Select(int.Parse).ToArray();
var datetime = new TimeSpan(value[0], value[1], value[2]);
return datetime;
}
我卡在的计算方法是
10^(0.1 * TaskDBA)
Taches = 任务列表
public double CalculateExposition(TasksGroup group)
{
// i thought this could be usefull
var GetDBA = group.Taches.Select(x => (double)(x.TaskDBA));
//i first use x.TotalHours because i need my TimeSpan to be converted to decimal
var sum = group.Taches.Select(x => GetDuration(x.TaskDuration)).Sum(x => x.TotalHours *
Math.Pow(10,GetDBA.));
return sum;
}
【问题讨论】:
-
您可以将
GetDuration替换为对TimeSpan.ParseExact的调用。对于内部Sum,使用与x不同的东西,这样就不会与Select 的x混淆。无需将TaskDBA转换为加倍。对于0.1 x TaskDBA,我只会做TaskDBA / 10.0。
标签: c# linq parsing math timespan