使用表名或MetaTables查询表 - LINQ

时间:2011-02-08 20:36:51

标签: c# .net vb.net linq

有没有办法使用Meta Tales或Table名称在LINQ中构建动态查询?

foreach (var metaTable in db.Mapping.GetTables())
{
    var queryType = metaTable.RowType.Type;

    var test = from q in db.GetTable(queryType)
               select q;
}

有没有办法做这样的事情?上述尝试产生错误:

找不到源类型&System; System.Data.Linq.ITable'的查询模式的实现。 '选择'未找到。请考虑明确指定范围变量的类型' q'。

谢谢, 克里斯

2 个答案:

答案 0 :(得分:3)

“长答案”是很多令人讨厌的表达式代码:你必须从头开始为你的查询构建表达式树,因为编译器只在所有内容都是强类型的情况下才会这样做。但是,如果您只想获取所有行,只需编写

即可
var test = db.GetTable(queryType).Cast<object>();

因为ITable接口已经是IEnumerable。现在你仍然需要理解一系列无类型对象。

你能告诉我们你想做什么以及为什么?

答案 1 :(得分:1)

您是否包含对System.Data.Linq命名空间的引用?如果你错过了那么你可能会得到这个错误,因为我认为LINQ扩展方法来自于此。