Я просто пытаюсь передать лямбда-функцию, которая приводит к строке, которая обычно заполняет специальный вид списка поиска.Я пытаюсь переписать некоторый код, используя функции более высокого порядка.Проблема в том, что метод Add
не похож на функцию keySelector
.Вот код, как мне заставить его скомпилировать, пожалуйста:
public static KeyedLookupList<TSource> Slug<TSource>(this List<TSource> items,
Func<TSource, string> keySelector)
{
var keyedLookupList = new KeyedLookupList<TSource>();
foreach (var item in items)
{
keyedLookupList.Add(keySelector, item);
}
return keyedLookupList;
}
Вот метод Add:
public override void Add(string key, TValue value)
{
base.Add(new KeyValuePair<string, TValue>(key, value));
}
Компилятор выдает следующую ошибку:
Error CS1503 Argument 1: cannot convert from 'System.Func<TSource, string>' to 'string'
Решено благодаря @peeyush singh:
public static KeyedLookupList<TSource> Slug<TSource>(this List<TSource> items,
Func<TSource, string> keySelector)
{
var keyedLookupList = new KeyedLookupList<TSource>();
foreach (var item in items)
{
keyedLookupList.Add(keySelector(item), item);
}
return keyedLookupList;
}