如何使用LINQ从SharePoint列表中筛选自定义列?

时间:2012-06-27 06:59:22

标签: linq sharepoint sharepoint-2010

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

由于我的自定义列是根据在另一个SPList上执行的某些计算动态创建的,因此它会频繁地增加和减少计数,因此我无法使用SPMetal。

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

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

请指教。谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定是否有可能只包含自定义列的列表项。即使Title不存在,你也会有ID,修改,创建等。另外,还会有一些隐藏的内置列。

如果您想要包含自定义字段的项目列表,可以尝试使用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();

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