Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将linq到对象查询转换为sql查询(无linq到sql代码或datacontext)_Linq_Linq To Objects - Fatal编程技术网

将linq到对象查询转换为sql查询(无linq到sql代码或datacontext)

将linq到对象查询转换为sql查询(无linq到sql代码或datacontext),linq,linq-to-objects,Linq,Linq To Objects,如何将linq转换为对象查询或任何其他Func委托转换为类似字符串的sql语句 比如说 var cat_list = new List<Cat> { ... }; var myquery = cat_list.Where(x => x.Age > 2 && x.Name.Contains("Kitty")); 我怎样才能做到这一点 做这样的事情并不简单。看看马特·沃伦的系列文章。他使用的所有代码也可以作为库使用。这将有助于您入门。您可以编写表达式树解析

如何将linq转换为对象查询或任何其他Func委托转换为类似字符串的sql语句

比如说

var cat_list = new List<Cat> { ... };

var myquery = cat_list.Where(x => x.Age > 2 && x.Name.Contains("Kitty"));

我怎样才能做到这一点

做这样的事情并不简单。看看马特·沃伦的系列文章。他使用的所有代码也可以作为库使用。这将有助于您入门。

您可以编写表达式树解析器并生成sql。您的描述包含一个错误-
myquery
不是
IQueryable
,它是一个
IEnumerable
。正确标记后,这是linq到对象,而不是linq到sql。在构造查询的调用中没有任何信息。

请检查DataContext.GetCommand()方法,该方法传递了一个IQueryable对象,并返回与查询对应的DbCommand对象。DbCommand对象的CommandText属性显示查询的文本。

不确定您实际询问的是什么。您希望获取任何给定的IQueryable(它有一个.Where()应用于列表,并将其转换为类似SQL的语句?在您的代码中,
myquery
IEnumerable
。是的,就是这样。实际上,我的意思是将已应用于列表的条件部分转换为类似SQL的语句。@svick是的,您是对的,我错过了这个。我知道,我认为这是因为linq to对象完全在内存中执行,相反,linq to sql有一部分在DB引擎本身上执行。但是是否有任何类型的表达式解析器通过表达式树生成类似sql的statemtn?不,实际上这是linq to对象而不是linq to sql,谢谢合作
"Age > @p1 AND Name LIKE @p2"