检查列表列是否存在使用SharePoint客户端对象模型?

Mag*_*ndi 7 sharepoint client-side sharepoint-2010 csom

使用SharePoint 2010中的客户端对象模型(C#),如何确定给定列表中是否存在指定的列(字段)名称?

谢谢,MagicAndi.

EHo*_*ski 12

刚刚在搜索同样的事情时发现了这一点,但看起来Sharepoint 2010有内置的功能,至少对于Server模型: list.Fields.ContainsField("fieldName");

不确定客户端是否存在.认为它是存储这些信息的好地方.


Ash*_*int 7

服务器对象模型

string siteUrl = "http://mysite";
using (SPSite site = new SPSite(siteUrl))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists["my forum"];
        for (int i = 0; i < list.Fields.Count; i++)
        {
            if (list.Fields[i].Title == "xyz")
            {
                -
                -
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

客户对象模型

string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List List = clientContext.Web.Lists.GetByTitle("my forum");
for (int i = 0; i < list.Fields.Count; i++)
{
    if (list.Fields[i].Title == "xyz")
    {
        -
        -
    }
}
Run Code Online (Sandbox Code Playgroud)


Vad*_*hev 5

以下方法演示了如何使用ListCSOM确定指定列是否存在:

static class FieldCollectionExtensions
{
    public static bool ContainsField(this List list,string fieldName)
    {
        var ctx = list.Context;
        var result = ctx.LoadQuery(list.Fields.Where(f => f.InternalName == fieldName));
        ctx.ExecuteQuery();
        return result.Any();
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

using(var ctx = new ClientContext(webUrl))
{
    var list = ctx.Web.Lists.GetByTitle(listTitle);
    if(list.ContainsField("Title")){
       //...
    }
}
Run Code Online (Sandbox Code Playgroud)