私は、データ構造をループして辞書を構築する以下のコードを持っています。
このコードを複数回複製しましたが、唯一の違いは辞書へのキーです
したがって、以下のコードではたまたま次のようになります。
task.Project + task.Name
それが辞書のキーですが、それ以外の場合は次のとおりです。
task.Project
あるいは単に
task.Name
これは、ハードコードされた「バケット」メソッドの 1 つの例です。
私の目標は、キーを計算するための関数にコールバックまたは何らかの方法で渡すことができる汎用の「バケット」メソッドを持つことです。
これを行う最良の方法は何ですか??
private Dictionary<string, TeamHours> BucketByProjectTask(Dictionary<string, TimeBooking> timebookings)
{
Dictionary<string, TeamHours> dict = new Dictionary<string, TeamHours>();
foreach (var name in timebookings.Keys)
{
TimeBooking tb = timebookings[name];
Person p = tb.Person;
foreach (var booking in tb.WeeklyTimeBookings.Keys)
{
var item = tb.WeeklyTimeBookings[booking];
foreach (var task in item.TaskSlices)
{
if (dict.ContainsKey(task.Project + task.Name))
{
TeamHours th = dict[task.Project + task.Name];
th.Hours = th.Hours + task.Hours;
}
else
{
TeamHours th = new TeamHours();
th.Hours = task.Hours;
th.Project = task.Project;
th.Task = task.Name;
th.Workstream = tb.Person.OrganisationalUnitName;
dict[task.Project + task.Name] = th;
}
}
}
}
return dict;
}