Я пишу несколько примеров, чтобы помочь мне использовать Func <> и Lambda, так как мне нужно разгадать предыдущий код разработчика в проекте, над которым я работаю, и он использует методы, с которыми я не знаком.
Итак, я написал несколько примеров увеличения сложности от запроса Simple LINQ до передачи LINQ как FUNC методу. Кажется, все в порядке.
Затем я переключился с LINQ на Lambda. Simple работает хорошо, но я не могу понять, как передать лямбду как (в?) 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;
}
Есть мысли?
Ричард