計算用のオブジェクトのリストが必要です。
私の現在のコードは次のようになります
private class HelperClass
{
public DateTime TheDate {get;set;}
public TimeSpan TheDuration {get;set;}
public bool Enabled {get;set;}
}
private TimeSpan TheMethod()
{
// create entries for every date
var items = new List<HelperClass>();
foreach(DateTime d in GetAllDatesOrdered())
{
items.Add(new HelperClass { TheDate = d, Enabled = GetEnabled(d), });
}
// calculate the duration for every entry
for (int i = 0; i < items.Count; i++)
{
var item = items[i];
if (i == items.Count -1) // the last one
item.TheDuration = DateTime.Now - item.TheDate;
else
item.TheDuration = items[i+1].TheDate - item.TheDate;
}
// calculate the total duration and return the result
var result = TimeSpan.Zero;
foreach(var item in items.Where(x => x.Enabled))
result = result.Add(item.TheDuration);
return result;
}
計算用の型(HelperClass)を紹介するだけでは、少し醜いです。私の最初のアプローチは、Tuple<DateTime, TimeSpan, bool>
通常のように使用することでしたが、インスタンスの作成後にTimeSpanを変更する必要があるため、Tuple.ItemX
読み取り専用であるため、Tupleを使用できません。
匿名タイプについて考えましたが、リストを初期化する方法がわかりません
var item1 = new { TheDate = DateTime.Now,
TheDuration = TimeSpan.Zero, Enabled = true };
var items = new List<?>(); // How to declare this ???
items.Add(item1);