【发布时间】:2019-11-23 23:32:56
【问题描述】:
我正在使用一个程序来获取大量 .csv 文件,读取它们并找到频率最高的产品。我想要做的是使用 Parallel.ForEach 循环读取文件来读取文件 并将产品存储到 ConcurrentDictionary 中(因为它的线程安全)。 我想知道的是找到一种方法来计算特定产品被读取的次数并将该频率存储为键,并将值存储为产品本身的名称。有什么帮助吗?
这是我的代码:
string[] files = File.ReadAllLines(@"C:\Users\Samuel Hendrix\Desktop\StoreData\StoreData\" + selectedStore + @"_" + selectedWeek + "_" + selectedYear + @".csv");
decimal cost;
//Splitting the content of the files into arrays, which are then stored into variable to be added to lists
Parallel.ForEach (files, file =>
{
string[] orderSplit = file.Split(',');
string items = orderSplit[0];
Products.TryAdd(items, items.Count() );
});
【问题讨论】:
-
出现频率相同的两个字符串会怎样?
-
更改值,以防万一发生
-
我对几件事感到困惑:您是在读取单个文件,并且想要并行处理行,还是您正在读取多个文件并想要处理并想要并行处理每个文件.您还计算所有列的频率还是仅计算特定列的频率(例如,第一列)。
-
我正在做的是访问 .csv 文件,读取所有行,将基于 ',' 的行拆分为一个数组,并获取添加到并发的数组 [0] 成员字典,所有我说的并行。但是我的问题我想知道如何计算读取特定项目的次数并将该值存储为项目的键