当LINQ用于检索SharePoint对象时,有人能帮助我了解幕后的工作吗。例如,我可以使用这样的代码:
private IEnumerable<List> newLists;
var dt = new DateTime(2010, 3, 20);
var query = from list
in clientContext.Web.Lists
where list.Created > dt && list.Hidden == false
select list;
newLists = clientContext.LoadQuery(query);
clientContext.ExecuteQuery();
它是如何工作的?
请求看起来怎么样?
从文件中我发现:
使用CSOM时,可以针对客户端编写LINQ查询对象,如列表和Web,然后使用ClientContext类以将这些查询提交给服务器。理解很重要当您采用这种方法时,您正在使用LINQ to Objects查询SharePoint对象,而不是LINQ to SharePoint。这意味着LINQ表达式不会转换为CAML,您将看不到与CAML转换相关的性能优势。
所以,我有点困惑,因为我认为LINQ表达式被转换为Caml请求。我不明白它是怎么工作的。在执行ExecuteQuery()
方法时,如何查看请求的详细信息?你能给我推荐一些观看请求的工具吗?
SP内部使用CAML:SP运行时将Linq转换为CAML,并通过Soap请求或REST语句发送(如果您使用RESTful服务):http://msdn.microsoft.com/en-us/library/ff798339.aspx(举例说明);
点击此处查看更多信息:http://msdn.microsoft.com/en-us/library/ff798464.aspx
这可能很有帮助:http://nikspatel.wordpress.com/2012/08/05/sharepoint-2010-data-querying-options-server-om-vs-client-om-vs-rest-vs-linq-vs-search-api/