Я пытаюсь использовать динамический linq для фильтрации datagrid времени исполнения с DataGridFiltering project. Но у меня проблема с перечислениями.Ошибка фильтрации фильтра динамической linq
, например, у меня есть класс, который содержит свойство перечисления, как это:
public class Student
{
public Student(int id,string name,StudentType type)
{
Id = id;
Name = name;
Type = type;
}
public int Id { get; set; }
public string Name { get; set; }
public StudentType Type { get; set; }
}
и StudentType перечисление:
public enum StudentType : byte
{
Normal=0,
Good
};
я создать класс контроллера для работы со списком студентов.
В моем контроллере у меня есть способ найти студентов по типу.
это FindByType Метод:
public IList<Student> FindByType(string type)
{
return _students.AsQueryable().Where("Type.ToString().StartWith(@0)",type).ToList();
}
, когда я называю FindByType метод я получаю эту ошибку в методе ParseMemberAccess динамического LINQ:
методы по типу 'Enum' не доступны
Спасибо за ваш ответ. я использую последнюю версию динамического linq. потому что я использую datagridfilter, я не могу написать Type instate Type.ToString(). пользователь не знает, что пользователь перечисления видит поле типа az, поэтому его необходимо отфильтровать, нажав Start With, End With или Contains. –
Я добавил в код, который позволит вам указать строку, и вы вернете список, который хотите, с фильтрацией StartsWith. Тем не менее, вы должны иметь возможность получить то, что хотите, с помощью средней части кода, поскольку этот метод также принимает строковый метод и использует фильтрацию StartsWith. Есть ли причина, по которой вы не можете использовать стандартный Linq? –