linq到查询中的sql报表

时间:2010-06-12 07:28:51

标签: c# linq-to-sql c#-3.0

这是我想写的方法:

public static IEnumerable<String> GetTableNames(this IQueryable<T> query)
{
    //...
}

其中IQueryable是一个linq-to-sql查询(我应该使用更具体的接口吗?)。

然后如果我有这样的查询

var q = from c in db.Customers
        from p in db.Products
        from cp in db.CustomerProducts
        where c.ID = 3 && cp.CustID == c.ID && p.ID == cp.ProdID
        select new {p.Name, p.Version};
q.GetTableNames();// return ["Customers", "Products", "CustomerProducts"]

基本上它会显示此查询在db中触及的所有表,可以执行查询来解决这个问题(因为无论如何都会发生这种情况)?任何想法?

(编辑:对不起,如果这有点太“给我代码!”,任何提示,部分解决方案或解释为什么这是不可能的将被视为谢谢!-Luke)

2 个答案:

答案 0 :(得分:1)

LINQ-to-SQL允许您轻松捕获TSQL - 只需设置.Log即可。那么问题是解析它。我将诱惑捕获TSQL,并使用SET STATISTICS IO ON在SSMS中播放它 - 这样可以轻松解析每个表的结果。

答案 1 :(得分:0)

你可以做DataContext.GetCommand(query).CommandText,然后解析寻找FROM和JOIN子句(棘手的是笛卡尔(逗号)连接)。