C#Lambda-选择条件

Joh*_*obs 5 c# lambda

我创建了一个Command有两个重要成员的类.

public class Command
{
    public string Name { get; set; }
    public CommandExecutedCallback Callback { get; set; }
    public delegate void CommandExecutedCallback(Command command);
}
Run Code Online (Sandbox Code Playgroud)

我在a中保存了这个类的多个对象List<Command>.

另一个类CommandProcessor有一个成员函数GetCallbacks(string name).

我想使用lambda表达式来获取具有CommandExecutedCallback名称匹配条件的-delegates 数组.

我可以通过以下方式获得所有回调:return commandList.Select(t => t.Callback).ToArray().

如何插入条件以仅获取具有指定名称的命令?

先感谢您.

Jas*_*ins 9

你需要添加一个Where条件:

return commandList.Where(t => t.Name == name).Select(t => t.Callback);
Run Code Online (Sandbox Code Playgroud)

ToArray除非你真的需要,否则你也应该避免打电话.除非您专门将此数据传递给需要数组的其他方法,否则复制所有数据ToArray可能是不必要的(而且相当昂贵)操作.