Не говоря уже о том, что я лично подхожу к ограничению .NET 2.0, используя dll 3.5 System.Core и копируя локальные (как упомянул Ник Мартышенко) ...
Фактическая проблемапохоже, что вы не возвращаете правильный тип в анонимном делегате List<T>.FindAll
принимает делегата Predicate<T>
.Предикат возвращает bool
.
List<T>.FindAll
НЕ похоже на метод LINQ where.Это не ленивый.То есть, это не IEnumerable, который дает при перечислении.FindAll возвращает List<T>
(уже перечислено).
Возможно, я не понимаю ваши требования здесь, но почему бы не сделать это:
List<foo> templist = list.FindAll(delegate (foo f)
{
bool itemStartsWith = f.Name.StartsWith(name);
if(itemStartsWith)
{
return true;
}
return false;
});