您可以定義Dictionary<string, Action>
或Dictionary<string, Func>
像
Dictionary<string, Action> actions = new Dictionary<string, Action>
{
{ "Admin", new Action(() => Console.WriteLine("I'm Admin")) },
{ "OfficeDirector", new Action(() => Console.WriteLine("I'm OfficeDirector")) },
{ "Regular", new Action(() => Console.WriteLine("I'm Regular or HumanResource")) },
{ "HumanResource", new Action(() => Console.WriteLine("I'm Regular or HumanResource")) },
};
,然後簡單地調用邏輯:
foreach(var position in listPositions) {
if (actions.ContainsKey(position)) {
actions[position]();
}
}
編輯: 或者作爲重點Predicate<string>
使用,稍微複雜些例子:
static Dictionary<Predicate<string>, Action> PredicatedActions = new Dictionary<Predicate<string>, Action>()
{
{ p => p == "Admin", new Action(() => Console.WriteLine("I'm Admin")) },
{ p => p == "OfficeDirector", new Action(() => Console.WriteLine("I'm OfficeDirector")) },
{ p => p == "HumanResource" || p == "Regular", new Action(() => Console.WriteLine("I'm Regular or HumanResource")) }
};
然後只是請致電適用的操作:
var actionToExecute = listPositions.SelectMany(
position => PredicatedActions.Keys.Where(condition => condition(position)).Select(key => PredicatedActions[key])
).Distinct();
actionToExecute.ToList().ForEach(action => action());
首先,將數據結構切換到「HashSet」而不是「List」。 – Servy