当我们使用linq到sql时,很少有可视化器存在,它向我们展示了linq生成的sql,但是当我们通过linq查询对象时,那么有没有办法有类似的sql语句。例如
string[] names =
new string[] { "Jon Skeet", "Marc Gravell", "tvanfosson",
"cletus", "Greg Hewgill", "JaredPar" };
var results = from name in names
where name.StartsWith("J")
select name;
我们可以从结果中提取sql吗?
一个人建议使用以下函数来使用sql ....
public static class MyExtensions
{
public static string ToTraceString<T>(this IQueryable<T> t)
{
string sql = "";
ObjectQuery<T> oqt = t as ObjectQuery<T>;
if (oqt != null)
sql = oqt.ToTraceString();
return sql;
}
}
是真的吗?如果是,你可以告诉我如何将我的结果转换为 IQueryable ,然后调用 ToTraceString()方法。感谢
答案 0 :(得分:2)
Linq to objects不会为您生成SQL。只有在使用linq实体或linq到sql时才会出现这种情况。
答案 1 :(得分:2)
我很确定你不能使用SQL来对抗&#39; linq2objects&#39;,因此无法从那些SQL中获取SQL。
Linq 2对象基本上可以用作sql中的表扫描。执行时,它逐个读取源行,并在每个行上应用过滤器/选择器。例如,请参见http://blogs.msdn.com/b/wesdyer/archive/2007/01/03/how-linq-to-objects-queries-work.aspx。
我假设您对调试查询感兴趣,还有另一个关于堆栈溢出的主题回答:How to debug a LINQ Statement