2012-03-14 60 views
0

动态查询不够动态。我曾见过像this解决方案,但我仍然要指出为基础,使用哪个表:Linq To Entities - 如何在表名称为参数的情况下创建查询

var query = db.Customers.Where("...").OrderBy("...").Select("..."); 

我想创建一个简单的查询工具,当用户将使用一个下拉列表中可用表中选择。结果,我想显示最初的几条记录。因此,我也需要更改表!也就是说,我需要的是这样的:

string selectedTable = "Customers"; 
var [tableName] = SomeTypecastingOperations(selectedTable); 
var query = db.[tableName].Where("...").OrderBy("...").Select("..."); 

是EF 动态足以应付呢?

回答

0

Linq-to-entities不支持。你可以通过Entity SQL或者一些丑陋的代码来达到这个目的,这些代码会为你想要查询的每个集合设置条件逻辑(比如表名为switch)。

+0

我很好奇你的_big switch_解决方案。一方是我的'selectedTable',另一方没有多态超类:( 我可以为这个开关写一个代码生成器,但是我不能返回像'ObjectSet '或'ObjectSet '等不同的结果。 – 2012-03-14 13:25:43

+0

这个开关不会返回任何东西,它会直接填满你的用户界面 – 2012-03-14 14:00:23

+0

现在我明白你的意思是**难看** :-) – 2012-03-14 14:13:51