Я хотел бы контролировать, как Linq запрашивает мою базу данных программно. Например, я бы хотел запросить столбец X , столбец Y или столбец Z , в зависимости от некоторых условий.
Прежде всего, я создал массив всех свойств внутри моего класса с именем myPropertyInfo
.
Type MyType = (typeOf(MyClass));
PropertyInfo[] myPropertyInfo = myType.GetProperties(
BindingFlags.Public|BindingFlags.Instance);
Массив myPropertyInfo
позволяет мне получить доступ к каждой детали свойства (Name, propertyType и т. Д.) Через индекс [i]
.
Теперь, как я могу использовать вышеуказанную информацию для управления тем, как Linq запрашивает мою БД?
Вот пример запроса, который я хотел бы использовать.
var myVar = from tp in db.MyClass
select tp.{expression};
Выражение , используя myPropertyInfo[i]
, чтобы выбрать, какое свойство (столбец) запрашивать.
Я не уверен, так ли это, но если есть другой способ, я буду рад узнать.
EDIT :
Мне кажется, правильное выражение - то, что использовал @Gabe. На самом деле, я хотел бы делать запросы на лету. Вот причина: у меня есть (i) таблица Organizations
(министерства, посольства, международные организации, такие как ООН, СОООН, ЮНИСЕФ, Всемирный банк и т. Д., И службы в зависимости от них). У меня есть (ii) другая таблица Hierarchy
, которая показывает, как эти организации связаны, начиная с того, к какой категории принадлежит каждая из них (правительство, иностранные представительства, частный сектор, НПО и т. Д.)
В каждом столбце, представляющем уровень в иерархии, некоторые строки будут длиннее, а другие - короче. Столбцы многих строк будут иметь одинаковое значение (например, 2 министерства, принадлежащие правительству, будут иметь значение «Правительство» в качестве значения для столбца «Уровень 1»).
Вот почему для каждой строки (организации) мне нужно переходить уровень за уровнем (то есть столбец за столбцом).
Надеюсь, на этот раз я был достаточно откровенен
Спасибо за помощь.