首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IEnumerable<Ienumerable<T>>转换为Dictionary<key,IEnumerable<T>>

将IEnumerable<Ienumerable<T>>转换为Dictionary<key,IEnumerable<T>>
EN

Stack Overflow用户
提问于 2021-11-17 14:41:29
回答 3查看 170关注 0票数 1

目前,我正在寻找一种将IEnumerable<DateTimeInterval>转换为Dictionary<Guid, IEnumerable<DateTimeInterval>>的方法。

我尝试使用IEnumerable<DateTimeInterval>.ToDictionary(x => x.id),但这只是返回一个Dictionary<Guid, DateTimeInterval>,而不是想要的Dictionary<Guid, IEnumerable<DateTimeInterval>>

我做错了什么?

dateTimeInterval的定义如下:

代码语言:javascript
复制
public class DatetimeInterval
{

    public Guid key {get; set;}
    public DateTime From { get; set; }
    public DateTime To { get; set; }

    public DatetimeInterval(DateTime from, DateTime to, Guid key)
    {
        Key = key;
        From = from;
        To = to;
    }
}

IEnumerable<DateTimeInterval>中,可能存在具有相同密钥的DateTimeIntervals。

因此,我非常希望IEnumerable.ToDictionary(x => x.key,v => v)返回,但这只是返回Dictionary<Guid, DateTimeInterval>,而不是被通缉的Dictionary<Guid, IEnumerable<DateTimeInterval>>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-17 14:53:22

对于这个用例,人们通常使用查找而不是字典:

代码语言:javascript
复制
var myLookup = myEnumerable.ToLookup(interval => interval.Id);

这将创建一个ILookup<Guid, DateTimeInterval>。查找类似于字典,但它将键映射到值集合,而不是单个值。

如果出于技术原因需要字典,可以将查找转换为“经典”字典:

代码语言:javascript
复制
var myDictionary = myLookup.ToDictionary(x => x.Key);
票数 3
EN

Stack Overflow用户

发布于 2021-11-17 14:58:22

代码语言:javascript
复制
Dictionary<Guid, IEnumerable<DatetimeInterval>> target = source
    .ToLookup(di => di.key, di => di)
    .ToDictionary(@group => @group.Key, @group => @group.Select(item => item));
  • ToLookup根据指定的属性对项进行分组
  • ToDictionaryILookup实现转换为Dictionary
  • Select帮助将IGrouping转换为IEnumerable
票数 0
EN

Stack Overflow用户

发布于 2021-11-17 14:54:18

代码语言:javascript
复制
var result = source
  .GroupBy(x => x.Key)
  .ToDictionary(
    g => g.Key,
    g => (IEnumerable<DateTimeInterval>)g);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70006418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档