4

是否可以遍历共享点列表的字段集合并仅检索我们的自定义字段而不是共享点内置字段。

using (SPSite site = new SPSite("http://localhost/"))
{
   using (SPWeb web = site.OpenWeb())
   {
       SPList list = web.Lists["My List"];
       foreach (SPField field in list.Fields)
       {
           //We also get sharepoint built-in column here. And we don't want that, just our
           //custom created fields.
       }
   }
}

任何帮助,将不胜感激。

谢谢

4

3 回答 3

9

你有两个选择:

  1. 检查该字段是否为内置字段:SPBuiltInFieldId.Contains(field.Id)
  2. 检查SPField.SourceId(来自 MSDN):

获取定义内置字段的命名空间,或者,如果它是自定义字段,则获取标识创建它的列表或网站的 GUID。

于 2011-03-17T15:01:17.690 回答
0

这是一种人为的(目前未经测试)的方式:

string fieldTypeClass = field.FieldTypeDefinition.FieldTypeClass;

if (!(string.IsNullOrEmpty(fieldTypeClass) || fieldTypeClass.StartsWith("Microsoft.SharePoint"))) {
//Only custom fields here
}
于 2011-03-22T21:45:58.877 回答
-2

我不知道它是否真的是您正在寻找的东西,不知道 .net digirati 是否仍然对 LINQ “微笑”,但使用 LINQ to Sharepoint 可能对您有用。

于 2011-03-17T15:12:51.593 回答