与えられたタプルのリストを実行するアクションを決定する最もクリーンな方法(簡単に理解できれば十分です)を判断しようとしています。
テーブルMyTypeとテーブルMyActionがあるとします。 MyTypeはMyActionと多対多の関係を持っているため、これらの表は中間表のActionsPerTypeで結合されます。enumタプルで与えられたアクションをきちんと決める
さて、アイデアは例えば、ActionsPerTypeが宣言したアクションを実行することです:
Dictionary<int, int> actionsPerType = context.ActionsPerType
.GroupBy(c => c.MyTypeId)
.ToDictionary(c => c.Key.MyTypeId, c.ToList());
私はKey
がactionsPerType.Key
で、Value
がで定義されたasync Task<decimal>
のリストであるDictionary<int, Func<Task<decimal>>>
にこれを変換したいですコード。 MyActionEnumは25近く開催する一方で
foreach (var item in actionsPerType)
{
switch ((MyTypeEnum)item.Key)
{
case MyTypeEnum.Random:
{
foreach (var action in actionsPerType[MyTypeEnum.Random])
{
switch ((MyActionEnum)action)
{
case MyActionEnum.Random:
dictionary[MyTypeEnum.Random].Add(SomeTaskThatReturnsBool);
break;
}
}
}
}
}
MyTypeEnumは約10項目を開催するので、これは本当に長いと醜い次のようになります。
は(ここで行わ、テストされていない)のようなものよりも、これに任意のクリーンなアプローチがあります。
これを試してみてください:辞書> actionsPerType = context.ActionsPerType .GroupBy(C => c.MyTypeId、D => D) .ToDictionary(C => c.Key、d.ToList() );パラメータとして 'd'を使用してヘルパーメソッドを呼び出すことができます –
jdweng