Я использовал конвертер, чтобы изменить VB на C# и одной из линий изначально является:VB преобразование в C#
Dim roles = System.Web.Security.Roles.GetAllRoles()
Dim roleNames() As String = roles.Where(Function(x) x.ToLower() <> "Admin").ToArray()
При возврате конверсионные я получаю:
dynamic roles = System.Web.Security.Roles.GetAllRoles();
string[] roleNames = roles.Where(x => x.ToLower() != "Admin").ToArray();
Который затем бросает ошибка:
Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.
Я попробовал несколько различных способов и несколько различных преобразователей, но я не получаю никаких разные результаты.
Почему это нормально работает в vb, а не в C#, если преобразование верное?
Позднее связывание с C# (с помощью 'dynamic') не может подобрать по методам расширения. Попробуйте изменить 'dynamic' на' var' и посмотреть, что произойдет. – willaien
@willaien На самом деле это не удается при попытке использовать лямбда, прежде чем она даже попытается решить метод расширения. – Servy
Это простое решение. Вы знаете в vb, что Dim, я бы предположил так, как это объявлено в C# ... Я бы волновался об изучении синтаксиса вместо преобразования кода ... – Codexer