You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PnP Core SDK(C#)筛选SharePoint自定义列列表项

使用PnP Core SDK筛选SharePoint自定义列的正确方法

直接使用索引器x["Status"]无法被PnP Core SDK的LINQ解析器识别,无法生成你期望的$filter查询参数。以下是几种可行的实现方式:

方法1:强类型实体类筛选

通过PnP Code Generator生成对应列表的强类型实体类,之后可以直接通过属性访问自定义列,代码更简洁且类型安全:

var listItems = await pnpContext.Web.Lists.GetByTitle("TestList")
    .Items
    .Where(x => x.Status == "Completed")
    .ToListAsync();

生成的实体类会自动映射SharePoint列表的自定义列,此时LINQ查询会被正确解析为$filter=Status eq 'Completed'。

方法2:使用FieldValue<T>方法

如果不想生成实体类,可以使用FieldValue<T>方法显式指定字段名称和类型,这是PnP Core SDK支持的筛选自定义列的方式:

var listItems = await pnpContext.Web.Lists.GetByTitle("TestList")
    .Items
    .Where(x => x.FieldValue<string>("Status") == "Completed")
    .ToListAsync();

该写法会生成你期望的OData查询,等价于调用_api/web/lists/getByTitle('TestList')/items/?$filter=Status eq 'Completed'。

方法3:直接使用RawQuery

对于复杂筛选场景,也可以直接通过RawQuery方法添加原生的OData筛选参数:

var listItems = await pnpContext.Web.Lists.GetByTitle("TestList")
    .Items
    .RawQuery("$filter=Status eq 'Completed'")
    .ToListAsync();

内容的提问来源于stack exchange,提问作者user2791953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:05:03