首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ILookup<DateTime、List<int>>转换为ILookup<DateTime、int>

将ILookup<DateTime、List<int>>转换为ILookup<DateTime、int>
EN

Stack Overflow用户
提问于 2016-04-11 19:47:40
回答 4查看 242关注 0票数 0

是否存在转换ILookup<DateTime,List<int>> to ILookup<DateTime,int>的方法?

我正在用"ToLookup“方法创建查找,但是我无法以我想要的方式创建它。我一直被List<int>所困,而不是仅仅是int。

另一个问题(它也可以解决我的问题)--我应该如何从IGrouping<DateTime,MyModel>创建查找以获得ILookup<DateTime,int>

MyModel包含两个整数min,max,我希望查找日期在它们之间有所有整数(2,3,4,5)

编辑:我目前的方法是错误的。MyModel: DateTime Date int min int max

一开始我有IQueryable of MyModel。作为ILookup,我正在尝试获取每个日期可能的所有整数。

例如-假设我有2 MyModels。

代码语言:javascript
复制
1st
Date = 2.01.2016
min = 2
max = 5

2nd
Date = 2.01.2016
min = 9
max = 12

我需要Lookup<DateTime, int>,它应该是<2.01.2016,<2,3,4,5,9,10,11,12>>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-11 20:26:06

对于每个MyModel,您可以创建一个键值对集合,其中键是Date属性,值从minmax (为此,必须使用Linq to Objects执行查询):

代码语言:javascript
复制
var pairs = models.AsEnumerable().SelectMany(
    m => Enumerable.Range(m.Min, m.Max - m.Min + 1)
                   .Select(v => new { Key = m.Date, Value = v }));

然后将此集合投影到查找中:

代码语言:javascript
复制
var lookup = pairs.ToLookup(kv => kv.Key, kv => kv.Value);
票数 1
EN

Stack Overflow用户

发布于 2016-04-11 19:51:23

假设您的ILookup<DateTime,List<int>>拥有您想要与每个DateTime关联的所有int,那么您需要首先平整您的初始数据:

代码语言:javascript
复制
var flat = lookup1.SelectMany(i => i, (dt, num) => new {dt, num});

这将为您提供与其int相关联的每个单独DateTime的对。然后可以使用ToLookup创建一个新的查找:

代码语言:javascript
复制
var lookup2 = flat.ToLookup(i => i.dt, i => i.num);
票数 0
EN

Stack Overflow用户

发布于 2016-04-11 20:25:25

为了创建对数字的日期查找,首先需要生成所有可能的日期和数字组合。不清楚数据源是什么,但假设它来自某个数据库,则需要对它们进行排序(查找将按枚举的顺序排序),生成值的范围,然后创建查找。

代码语言:javascript
复制
var orderedData =
    from x in context.MyModel
    orderby x.Date, x.Min
    select x;
var query =
    (from x in orderedData.AsEnumerable()
    from i in Enumerable.Range(x.Min, x.Max - x.Min + 1)
    select new { x.Date, i }).ToLookup(x => x.Date, x => x.i);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36557927

复制
相关文章

相似问题

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