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

如何用C# LINQ筛选除首个项外同variantId的JObject产品项

用C# LINQ实现按variantId筛选移除重复项(保留首个)

嘿,这事儿不难!既然你已经有排序后的sortedProducts集合了,我们只需要按variantId分组,然后把每个组里除了第一个之外的项挑出来,放进productsToRemove里就行。直接上代码:

// 把每个variantId组里除第一个外的项收集到移除列表
productsToRemove = sortedProducts
    .GroupBy(product => product["variantId"].Value<int>())
    .SelectMany(group => group.Skip(1))
    .Cast<JObject>()
    .ToList();

代码细节说明:

  • GroupBy:把排序后的产品按variantId的值分组,这里假设variantId是整数类型;如果你的场景里它是字符串,把Value<int>()改成Value<string>()就行。
  • SelectMany + Skip(1):对每个分组,跳过第一个需要保留的项,再用SelectMany把所有分组的剩余项合并成一个扁平化的集合。
  • Cast():因为JArray里的元素默认是JToken类型,所以需要转换成JObject才能匹配你定义的List<JObject>类型。
  • ToList():最后转换成列表赋值给productsToRemove。

这样处理后,productsToRemove里就会包含所有重复variantId中除首个之外的产品项,你后续可以直接用这个列表去处理移除逻辑啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:33:10