我想確定最乾淨的(這是很好,如果它可以很容易地理解)的方式來確定哪些行動來執行給定的元組列表。
比方說,我有表MyType和表MyAction。這些表由一箇中間表ActionsPerType連接,因爲MyType與MyAction有多對多的關係。現在乾淨地確定給定一個枚舉元組的行爲
,這個想法是執行ActionsPerType宣佈的行動,例如:
Dictionary<int, int> actionsPerType = context.ActionsPerType
.GroupBy(c => c.MyTypeId)
.ToDictionary(c => c.Key.MyTypeId, c.ToList());
我想將此轉換爲Dictionary<int, Func<Task<decimal>>>
,其中Key
是actionsPerType.Key
和Value
在規定的async Task<decimal>
列表代碼。
是否有任何這更簡潔的方法不是像(在這裏完成的,未經測試):
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項,而MyActionEnum將舉行近25,所以這將是很長的又醜。
嘗試這種情況:字典> actionsPerType = context.ActionsPerType .GroupBy(C => c.MyTypeId,d => d) .ToDictionary(C => c.Key,d.ToList() );你可以用'd'作爲參數調用一個輔助方法 –
jdweng