gpt4 book ai didi

c# - 将 Lambda LINQ 语句作为 Func<> 传递时出现问题

转载 作者:行者123 更新时间:2023-12-03 07:53:44 24 4
gpt4 key购买 nike

我正在编写一些示例来帮助我使用 Func<> 和 Lambda,因为我需要解开我所在项目的先前开发人员代码,而他使用了我不熟悉的技术。

因此,我编写了一些增加复杂性的示例,从简单的 LINQ 查询到将 LINQ 作为 FUNC 传递给方法。一切看起来都不错。

然后我从 LINQ 切换到 Lambda。简单工作正常,但我不知道如何将 Lambda 作为(在?)Func<> 中传递。

我的代码如下。我已将我遇到的问题标记为 WHAT_GOES_HERE

private void some method()
{
Dictionary<int,string> dic = new Dictionary<int,string>();

//Set the data into the dictionary
dic.Add(1, "Mathew");
dic.Add(2, "Mark");
dic.Add(3, "Luke");
dic.Add(4, "John");
dic.Add(5, "John");

#region Simple LINQ as Lambda

string searchName = "John";
var match4 = dic.Where(entry => entry.Value == searchName).Select(entry => entry.Key);

//Get the data out of the return from the query
foreach (int result in match4)
{
int keyValue = result;
}

#endregion


#region Passing the Simple LINQ as Lambda as a Func<>

//uses the above Lambda - This works although the name used is the value of searchName
IEnumerable<int> match5 = RunTheMethod(deligateName => match4, "John");

//I want to have an inline Lambda as the first parameter
IEnumerable<int> match6 = RunTheMethod(WHAT_GOES_HERE?, "John");

foreach (int result in match6)
{
int keyValue = result;
}

#endregion
}


public IEnumerable<int> RunTheMethod(Func<string, IEnumerable<int>> myMethodName, string name)
{
IEnumerable<int> i = myMethodName(name);
return i;
}

有什么想法吗?理查德

最佳答案

认为你想要:

 RunTheMethod(name => dic.Where(entry => entry.Value == name)
.Select(entry => entry.Key),
"John");

但还不完全清楚...

关于c# - 将 Lambda LINQ 语句作为 Func<> 传递时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com