我的要求是使用LINQ在SharePoint列表中仅使用自定义列获取项目。
由于我的自定义列是根据在另一个SPList上执行的某些计算动态创建的,因此它会频繁地增加和减少计数,因此我无法使用SPMetal。
我需要包含一个条件(!(SPBuiltInFieldId.Contains(field.Id)))来检查这些项是否仅来自以下查询中的自定义字段。
List<SPListItem> AllResponses = (from SPListItem Response in oList.Items
select Response).ToList();
请指教。谢谢!
答案 0 :(得分:0)
我不确定是否有可能只包含自定义列的列表项。即使Title不存在,你也会有ID,修改,创建等。另外,还会有一些隐藏的内置列。
如果您想要包含自定义字段的项目列表,可以尝试使用Where和Any方法的以下内容:
List<SPListItem> AllResponses =
(from SPListItem Response in oList.Items select Response)
.Where(item => item.Fields
.Cast<SPField>()
.Any(field => !SPBuiltInFieldId.Contains(field.Id)))
.ToList();
这将返回至少包含一个自定义字段的所有项目。