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

如何将IEnumerable<IList<Telemetry>>转换为按Id分组的IDictionary<string, IEnumerable<IList<Telemetry>>>?

实现方案

你可以直接通过LINQ实现目标转换,根据你的业务场景不同,有两种可选写法:

通用场景(单个IList可包含多个不同Id的元素)

该方案会把包含对应Id的IList<Telemetry>实例全部分配到对应Id的分组下,即使一个列表同时包含多个不同Id的元素也能正常处理:

// telemetryCollection为你的TelemetryCollection实例
IDictionary<string, IEnumerable<IList<Telemetry>>> result = telemetryCollection
    .SelectMany(list => list
        .Select(t => t.Id)
        .Distinct()
        .Select(id => new { Id = id, RelatedList = list }))
    .GroupBy(pair => pair.Id, pair => pair.RelatedList)
    .ToDictionary(group => group.Key, group => group.AsEnumerable());

简化场景(单个IList内所有元素Id完全一致)

如果你的业务逻辑保证每个IList<Telemetry>内部的所有Telemetry实例的Id属性完全相同,可以用更简洁的写法:

// 建议先过滤空列表避免First()抛出异常
IDictionary<string, IEnumerable<IList<Telemetry>>> result = telemetryCollection
    .Where(list => list.Any())
    .GroupBy(list => list.First().Id)
    .ToDictionary(group => group.Key, group => group.AsEnumerable());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:04