0

我正在寻找一种根据来自 URL 的请求过滤 JObject 的方法。第二个代码块按预期工作并从响应中删除“Id”列:

我的对象:

JObject rss = new(
                    new JProperty("Name", name),
                    new JProperty("Surname",
                         new JArray(from p in data select p.sname)),
                    new JProperty("Id",
                         new JArray(from p in data select p.id)))

我试过的:

var fields = rss.Descendants()
                           .Where(x => x.Type == JTokenType.Property)
                           .Cast<JProperty>()
                           .Where(x => x.Name == "Id").ToList();
                foreach (var field in fields)
                {
                    field.Remove();
                } 

但是,我找不到一种方法来执行此过程以删除请求的字段或仅返回所需的字段。除了 GraphQL 之外,还有什么方法可以完成这种类型的过程吗?

4

1 回答 1

0

如果你想手动删除你的属性,JObject你可以这样做:

var requestedPaths = new[] { "Name" };
foreach (var prop in rss.Descendants().OfType<JProperty>().ToList())
{
    if (!requestedPaths.Contains(prop.Path))
    {
        prop.Remove();
    }
}
于 2021-09-14T17:56:21.843 回答