Csharp/C#教程:延迟执行 – 字典输出分享


延迟执行 – 字典输出

我有一个Linq查询,返回大约五十万行。 但是,由于我没有调用ToList(),执行仍然是延迟的。 到现在为止还挺好。

我需要一个来自此查询的Dictionary<int, List>输出,它将在Dictionary中返回大约100,000个条目(Distinct整数列值)。

我试过这样的事……

 var myDictionary = new Dictionary<int, List>(); var myDictionaryOutput = MyQuery.Select(p => AddOrUpdateDictionary(myDictionary, p)); 

MyQuery是我的linq查询,AddOrUpdateDictionary是我写的自定义函数。

这会将每个条目投射到一个不是我想要的字典。

我只想要字典输出。

样本数据如下……

 1234 | 2015-08-24 | 2015-08-25 | null | 1234 | null | 2015-08-26 | null | 2345 | null | null | 2015-08-23 | 

我希望输出是一个带有两个键的字典

(2行中的2个键来自500,000行的100,000个键),

 1234 -> List{2015-08-24, 2015-08-25, 2015-08-26} and 2345 -> List{2015-08-23} 

我的想法是评估MyQuery.ToList()并将其传递给我的自定义函数将不会非常有效,因为我必须使用ForEach循环遍历50万行。

我错了还是有更好的方法来实现我的目标?

看起来你想要做的是通过过滤null s以及随后转换为字典的组:

上述就是C#学习教程:延迟执行 – 字典输出分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var dict = MyQuery .Select(row => new {row.Id, Dates = new[] {row.Date1, row.Date2, row.Date3}}) .SelectMany(row => row.Dates.Select(d => new {row.Id, Date=d})) .GroupBy(row => row.Id) .ToDictionary(g => g.Key, g => g.Select(r => r.Date).ToList()); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1012252.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐