0

我的要求是使用 LINQ 在 SharePoint 列表中仅从自定义列中获取项目。

由于我的自定义列是根据在另一个 SPList 上完成的一些计算动态创建的,因此它的计数经常增加和减少,因此我不能使用 SPMetal。

我需要包含一个条件(!(SPBuiltInFieldId.Contains(field.Id)))来检查项目是否仅来自以下查询中的自定义字段。

List<SPListItem> AllResponses = (from SPListItem Response in oList.Items
                                select Response).ToList();

请指教。谢谢!

4

1 回答 1

0

我不确定是否有可能只包含自定义列的列表项。即使 Title 不存在,您也会有 ID、Modified、Created 等。此外,还会有许多隐藏的内置列。

如果您想要一个包含具有自定义字段的项目的项目列表,您可以尝试以下操作,它使用WhereAny方法:

List<SPListItem> AllResponses = 
    (from SPListItem Response in oList.Items select Response)
    .Where(item => item.Fields
        .Cast<SPField>()
        .Any(field => !SPBuiltInFieldId.Contains(field.Id)))
    .ToList();

这将返回至少具有一个自定义字段的所有项目。

于 2012-06-27T19:32:12.083 回答