2009-09-19 4 views
2

Мне нужно выбрать различные уровни таблиц отделов отчетов, то есть Dept1, Dept2, Dept3, ect. [1] в зависимости от того, какой уровень отчетности пользователь выбирает. Как я могу динамически выражать «таблицу» для выбора на основе заданного параметра строки, который является именем таблицы?Динамическое имя таблицы в LINQ для объектов

[1] Легкие точки (позволяет говорить) для тех, кто может помочь мне в этом, более глубоком беспорядке, чем подвергнутый вопрос.

ВВЕДЕНИЕ НОВОСТИ: Похоже, я собираюсь построить конструкцию «switch/case». Я устал смотреть на идиотские не-решения, и первый умный, который я нашел, не работает достаточно легко (без поколений монашеская, уединенная преданность). Потребности клиента доходят до моего.

+0

Это очень плохо способ организовать данные, но я подозреваю, что вы сейчас это понимаете. –

+1

Я понял, что с колледжа, но я не всегда могу использовать свои собственные проекты из слова go. :-( – ProfK

+0

-1 для ненужного купола и попыток умных фразрингов. Придерживайтесь точки, пожалуйста. – Odrade

ответ

1

Я не считаю, что EF имеет эквивалент GetTable Linq-> SQL, хотя я нашел this post о возможной будущей реализации GetEntitySet, а также простую реализацию, которую вы можете использовать, я бы это проверил.

+0

На этом посту есть одно хорошее решение кандидата, утопающее в черном море полной глупости и плотности, например, только в радиоактивных металлах. – ProfK

0

У вас есть возможность изменить схему? Я подозреваю, что вы задаете этот вопрос, потому что вы этого не делаете, но если вы это сделаете, может быть проще иметь таблицу Department, которая определяет название отдела и его идентификатор. Затем вы можете иметь одну таблицу с сущностями, которые вы ищете, и внешний ключ, указывающий на отдел.

Таким образом, если лицо, которые вы пытаетесь запросом являются сотрудниками, ваши таблицы могут выглядеть следующим образом:

Department 
------------ 
ID  int 
Name text 

Employee 
-------------------- 
ID    int 
Name   text 
DepartmentID int 

Тогда ваш запрос может выглядеть следующим образом:

var Employees = from emp in db.Employee.Include("Department") 
       where emp.Department.Name == "Sales" 
       select emp; 
+0

Я могу изменить схему, но только позже, с инкрементным переписыванием. Я не могу изменить ее сегодня, чтобы решить эту проблему. – ProfK

Смежные вопросы