【发布时间】:2012-07-11 19:25:52
【问题描述】:
我正在尝试编写一个 linq to sql 查询,并根据用户提供的输入字符串在运行时动态选择要从哪个表中选择。现在我有一个选择语句可以做到这一点,但它只是重复相同的查询三次,唯一的区别是选定的表。有点像这样:
if (input == "94")
{
var query = from i in db.Table94
select new MyClass(i.A, i.B, i.C);
}
if (input == "95")
{
var query = from i in db.Table95
select new MyClass(i.A, i.B, i.C);
}
//more conditional queries
query = query.Where(addtionalFilteringDoneHere);
DataGridView.DataSource = query;
使用条件 Where 子句很容易,但我正在为表格选择寻找类似的东西。我厌倦了几件事,但它们没有用。比如:
var query = from i in FetchTable(input)
select new MyClass(i.A, i.B, i.C);
query = query.Where(addtionalFilteringDoneHere);
public returnType FetchTable(string input)
{
//need help here
return db.GetTable<conditionalTable>;
}
我不知道返回类型是什么,或者即使有办法做到这一点。有可能吗?
【问题讨论】:
-
这个例子有点误导。这两个查询最后都有预测,因此在这两种情况下,您都有
IEnumerable<MyClass>作为结果。如果表达式类型始终相同,那么应用过滤器是一项显而易见的任务。