我有以下示例:
public class Commands
{
public int ID { get; set; }
public List<string> Alias { get; set; }
}
public class UserAccess
{
public int AccessID { get; set; }
// other stuff not needed for the question
public List<Commands> AllowedCommands { get; set; }
}
现在,我想在UserAccess上实现一种方法,如果在列表上未找到任何别名,则返回命令ID或NULL,请在
HasCommand
下面查看我所说的肮脏示例:public class UserAccess
{
public ID { get; set; }
// other stuff not needed for the question
public List<Commands> AllowedCommands { get; set; }
public Commands HasCommand(string cmd)
{
foreach (Commands item in this.AllowedCommands)
{
if (item.Alias.Find(x => string.Equals(x, cmd, StringComparison.OrdinalIgnoreCase)) != null)
return item;
}
return null;
}
}
我的问题是,运行或实现HasCommand方法的最有效方法是什么?
还是有更好的方法将其实现到UserAccess中?
最佳答案
可以缩短一点
public Commands HasCommand(string cmd)
{
return AllowedCommands.FirstOrDefault(c => c.Alias.Contains(cmd, StringComparer.OrdinalIgnoreCase));
}
但这几乎是同一回事。
关于c# - 在列表中查找项目<T>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7651801/