LINQ to实体中的动态“表”名称

时间:2009-09-19 15:45:18

标签: .net linq entity-framework

我需要从不同级别的报告部门表中进行选择,即Dept1,Dept2,Dept3等。 [1]取决于用户选择的报告级别。如何根据给定的字符串参数(即表名?

)动态表达要从中选择的“表”

[1]简单点(让我们谈谈)对于任何可以帮助我摆脱这种情况的人来说,比暴露的问题更深刻。

突发新闻:看起来我正在使用'switch / case'结构。我厌倦了对愚蠢的非解决方案的研究,而我发现的第一个聪明的方法并不容易实现(没有世代修道院,僻静的奉献精神)。客户的需求来自我的。

2 个答案:

答案 0 :(得分:1)

我不相信EF有相当于Linq-> SQL的GetTable,虽然我确实找到了this post关于GetEntitySet可能的未来实现以及你可以使用的简单实现我会检查它进行。

答案 1 :(得分: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;