您可以定义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