C# 查询中的linq到sql报表表

C# 查询中的linq到sql报表表,c#,linq-to-sql,c#-3.0,C#,Linq To Sql,C# 3.0,下面是我想写的方法: public static IEnumerable<String> GetTableNames(this IQueryable<T> query) { //... } 基本上,它会显示这个查询在数据库中涉及的所有表,执行查询也可以解决这个问题(因为无论如何都会发生这种情况)?有什么想法吗 (编辑:抱歉,如果这有点太“给我一个代码!”,任何提示、部分解决方案或解释为什么这是不可能的都会被考虑,谢谢!-Luke)LINQ to SQL允许您轻松

下面是我想写的方法:

public static IEnumerable<String> GetTableNames(this IQueryable<T> query)
{
    //...
}
基本上,它会显示这个查询在数据库中涉及的所有表,执行查询也可以解决这个问题(因为无论如何都会发生这种情况)?有什么想法吗


(编辑:抱歉,如果这有点太“给我一个代码!”,任何提示、部分解决方案或解释为什么这是不可能的都会被考虑,谢谢!-Luke)

LINQ to SQL允许您轻松捕获TSQL-只需设置
.Log
。接下来的问题是解析它。我很想捕获TSQL,并在SSMS中使用
SET STATISTICS IO ON
-这可以轻松解析每个表的结果。

您可以执行
DataContext.GetCommand(query).CommandText
,然后解析查找FROM和JOIN子句(棘手的是笛卡尔(逗号)连接).

这是否会导致服务器的另一次往返(除了实际运行查询之外)?也许解析TSQL是一种方法。。。
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"]