我有一个文档库。我想根据一些过滤条件过滤文档。很难动态生成Caml查询,这将根据过滤器值给出实际结果。
过滤器值是文档库中的列。 Linq to Sharepoint支持列表,但无论如何我也可以查询文档库吗?
答案 0 :(得分:0)
使用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();