У меня есть сетка Kendo, в которой включена фильтрация сервера. Поле для фильтрации через передается как строка. Например, я хочу отфильтровать «SampleId». Теперь мне нужно написать запрос LINQ to Entities, который может фильтроваться с использованием строго типизированного свойства SampleId. Например:LINQ to Entities - Адресация свойств класса с их именами строк
db.Cases.Where(x=>targetlist.Contains(x.SampleId))
где targetlist - это список элементов из фильтра.
Таким образом, существует ли способ написать запрос, чтобы «SampleId» мог напрямую перевести на Case.SampleId?
Я попытался отразить и использовал GetProperty и GetValue, а LINQ to Entities не нравится.
Любые предложения будут высоко оценены!
EDIT (ПИД- для оригинального плаката srinaik2020):
@zaitsman: это код размещен в комментарии ниже и фактическое решение проблемы, на основе принятого ответа.
public static class MyExtensions
{
public static string GetPropertyByName(this CaseV case1, string name)
{
var x = typeof (CaseV).GetProperty(name).GetValue(case1);
if (x != null)
{
return x.ToString();
} else {
return "none";
}
}
}
вся * точка * использовать что-то вроде EF является * избегать * делать подобные вещи. * Идея * заключается в том, чтобы скомпилировать тип времени. Если вы этого не хотите, просто не используйте всю функцию и возвращайтесь к более традиционному методу параметризованных запросов, выписанных как строки. – Servy