C# 将Func传递到列表中。查找

C# 将Func传递到列表中。查找,c#,func,C#,Func,我有以下代码: [TestMethod] public void A_Player_Can_Be_Deleted_From_The_List() { Player player = playerList.Find(ByName("Davy",whatGoesHere?); playerList.Remove(player); playerList.Count.Should().Be

我有以下代码:

    [TestMethod]
    public void A_Player_Can_Be_Deleted_From_The_List()
    {                     
        Player player = playerList.Find(ByName("Davy",whatGoesHere?);
        playerList.Remove(player);

        playerList.Count.Should().Be(2);
    }
Func“ByName”定义为:

Func<string, Player, bool> ByName = (name, player) => player.Name == name;
Func ByName=(name,player)=>player.name==name;

我不知道如何传递第二个(player)参数。有可能吗?

播放器提供给传递给
列表的谓词。查找
,这样您就可以按名称传递给

Player player = playerList.Find(p => ByName("Davy", p));
playerList.Remove(player);
您可以使用,而不是使用
Find
Remove


如果要在
Find
方法中使用
ByName
委托,则必须对列表中的每个元素执行该委托。例如:

string player = playerList.Find((playerElement) => ByName("Davy", playerElement));

播放器
列表提供。查找
-看起来您需要
按名称(字符串名称){return p=>p.name==name;}
。您的示例无法编译,因为没有使用
Func
List.Find重载。这也可以使用
playerList.Find(p=>ByName(“Davy”,p))@nemesv我想你应该加上这个作为答案。:)如果他不想使用委托,但想使用方法,我想他不会详细说明委托。。。似乎它没有抓住问题的重点。@davy-什么没有编译?@Lee-抱歉,删除了评论并接受了答案。谢谢你的帮助。
playerElement
周围的括号不是必需的。@svick。是的,没有必要。
string player = playerList.Find((playerElement) => ByName("Davy", playerElement));