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

如何使用Linq检测C#嵌套对象中categoryType与type的重复项?

用Linq检测types层级的重复值

1. 检测是否存在任意一个rootCollection对象包含重复的type.value

如果只需要判断整个集合里有没有某个root对象的types数组存在重复的type.value,可以用以下Linq语句:

var hasDuplicateTypes = rootCollection.Any(root => 
    root.Types.GroupBy(t => t.Type.Value).Any(g => g.Count() > 1)
);

逻辑说明:遍历每个root对象,对其Types数组按Type.Value分组,只要有分组的元素数量大于1,就表示该root内存在重复的type.value,Any会在找到第一个符合条件的root时立即返回true。

2. 筛选出所有包含重复type.value的root对象

如果需要找出所有存在重复type.value的root对象,使用Where替代Any:

var rootItemsWithDuplicates = rootCollection.Where(root => 
    root.Types.GroupBy(t => t.Type.Value).Any(g => g.Count() > 1)
).ToList();

3. 获取包含重复细节的结果

如果需要知道每个root对象里具体哪些type.value重复了,可以扩展Linq查询,返回包含root标识和重复值的匿名对象:

// 假设root对象有唯一标识属性(如Id),用来区分不同的root项
var duplicateTypeDetails = rootCollection
    .Select(root => new {
        RootIdentifier = root.Id,
        DuplicateTypeValues = root.Types
            .GroupBy(t => t.Type.Value)
            .Where(g => g.Count() > 1)
            .Select(g => g.Key)
            .ToList()
    })
    .Where(item => item.DuplicateTypeValues.Any())
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:04:57