仅来自Sharepoint列表的自定义字段

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

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. } } } 

任何帮助,将不胜感激。

谢谢

你有两个选择:

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

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

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

 string fieldTypeClass = field.FieldTypeDefinition.FieldTypeClass; if (!(string.IsNullOrEmpty(fieldTypeClass) || fieldTypeClass.StartsWith("Microsoft.SharePoint"))) { //Only custom fields here } 

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