2009-09-19 85 views
2

我需要从不同级别的报告部门表中进行选择,即Dept1,Dept2,Dept3等。 [1]取决于用户选择哪个报告级别。我怎样才能动态表达'表'来选择基于给定的字符串参数,这是表名?LINQ到实体的动态'表'名称

[1]对于任何能够帮助我解决问题的人来说,简单点(让我们谈谈),比暴露的问题更加深刻。

BREAKING NEWS:看起来我正在用'switch/case'构造。我厌倦了对愚蠢的非解决方案的研究,而我发现的第一个聪明的方案并不容易工作(没有几代修道院,僻静的奉献精神)。客户的需求来到我的面前。

+0

这是一个非常糟糕的组织数据的方式,但我怀疑你现在已经明白了。 – 2009-09-19 16:15:27

+1

我明白,自从大学毕业后,我就不能总是使用我自己的设计。 :-( – ProfK 2009-09-19 17:18:30

+0

-1对于不必要的硫酸和巧妙的措辞,请耐心等待 – Odrade 2011-01-11 00:51:39

回答

1

我不相信EF有相当于Linq-> SQL的GetTable,但我确实发现了this post关于GetEntitySet的一个可能的未来实现以及一个可以使用的简单实现,我会检查它。

+0

在这篇文章中有一个很好的候选解决方案,淹没在极其愚蠢和密度极高的黑海中,如只在放射性金属中看到的。 – ProfK 2009-09-19 16:30:57

0

您是否有能力更改架构?我怀疑你是问这个问题,因为你没有,但如果你这样做,可能会更容易有一个Department表,它定义了部门名称和它的ID。然后,您可以使用您正在搜索的实体和指向部门的外键的单个表。

所以,如果你想查询实体的员工,你的表可能是这样的:

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 2009-09-19 16:29:37