В проекте на C# понадобилось использовать F# функцию (FSharpFunc). Но при попытке это сделать получаю ошибку компиляции
error CS1660: Не удается преобразовать лямбда-выражение к типу "FSharpFunc <_, _>", так как он не является типом делегата.
MCVE
Класс User
class User
{
public int Age { get; set; }
}
Тестовые данные
var users = new List<User>
{
new User { Age = 15 },
new User { Age = 21 },
new User { Age = 32 },
new User { Age = 35 },
new User { Age = 23 }
};
Попытка вызова функции из модуля Seq
User max = SeqModule.MaxBy<User, int>(x => x.Age, users);
К сожалению, на данный момент, для того, чтобы вызвать F# функцию нужно явно использовать конвертер:
User max1 = SeqModule.MaxBy(FSharpFunc<User, int>.FromConverter(x => x.Age), users);
или совсем немного более короткий способ
User max2 = SeqModule.MaxBy<User, int>((Converter<User, int>)(x => x.Age), users);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники