延迟执行 – 字典输出
我有一个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