我有一个文档库。我想根据一些过滤条件过滤文档。动态生成 Caml 查询真的很困难,这将根据过滤器值给出实际结果。
过滤器值是文档库中的列。Linq to Sharepoint 支持列表,但无论如何我也可以查询文档库吗?
我有一个文档库。我想根据一些过滤条件过滤文档。动态生成 Caml 查询真的很困难,这将根据过滤器值给出实际结果。
过滤器值是文档库中的列。Linq to Sharepoint 支持列表,但无论如何我也可以查询文档库吗?
在使用 SPMetal 工具生成实体后,您可以使用 Linq To Sharepoint。
http://www.codeproject.com/Articles/399927/SharePoint-2010-LINQ-and-SPMetal
这是 Sharepoint Link 的示例:
using (SiteEntitiesDataContext context = new SiteEntitiesDataContext("http://appes-pc"))
{
var result = context.Manager.Where(m => m.Country == "USA");
foreach (ManagerItem manager in result)
{
Console.WriteLine(manager.Name);
}
}
或者,如果您想使用 CAML,有一个非常好的 CAML 构建器实用程序,称为:
Camlex.NET - http://camlex.codeplex.com/
所以这:
<Where>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Eq>
</Where>
可以写成:
string caml =
Camlex.Query()
.Where(x => (string)x["Status"] == "Completed").ToString();