C# 从十几个文本文件中检索信息
希望有人能帮助我 我有一个保存了一些文本文件的文件夹。所有文本文件都是相似的。它们看起来像这样: 12牛奶33 18/20/2020 15水果44 2018/20/2019 假设这是第二个 10可口可乐4 2019年1月2日 15水果5 2018/20/2020 所以首先是ID、姓名、计数和最后的日期。所以我循环浏览所有的文本文件,我想知道存储容量最高的产品是什么。所有文本文件都是相似的,但这并不意味着它们都有相同的产品 在这种情况下,我的程序应该是-15水果49 示例代码:C# 从十几个文本文件中检索信息,c#,C#,希望有人能帮助我 我有一个保存了一些文本文件的文件夹。所有文本文件都是相似的。它们看起来像这样: 12牛奶33 18/20/2020 15水果44 2018/20/2019 假设这是第二个 10可口可乐4 2019年1月2日 15水果5 2018/20/2020 所以首先是ID、姓名、计数和最后的日期。所以我循环浏览所有的文本文件,我想知道存储容量最高的产品是什么。所有文本文件都是相似的,但这并不意味着它们都有相同的产品 在这种情况下,我的程序应该是-15水果49 示例代码: string[]
string[] allFiles = Directory.GetFiles(path);
int count = 0;
foreach(var line in allFiles)
{
List<string> oneFile = new List<string();
oneFile.AddRange(File.ReadAllLines(line));
foreach(var oneLine in oneFile)
{
string[] justOneLine = oneLine.Split(" ");
count+= int.Parse(justOneLine[2]);
}
}
大纲解决方案,未经测试。有更多简洁的方法可以做到这一点,但我已经尝试展示了每一步 创建一个类来保存行
public class StockItem
{
public string StockName { get; set; }
public int StockCount { get; set; }
}
然后可以将所有库存项目添加到列表中
List<StockItem> allItems = new List<StockItem>();
string[] allFiles = Directory.GetFiles(path);
foreach(var file in allFiles)
{
// open the file - you need to read the file here - and create thisFile
foreach(string line in thisFile)
{
string[] thisItem = line.Split(' ');
allItems.Add(new StockItem() {StockName = thisItem[1], StockCount = int.Parse(thisItem[2])});
}
}
这将创建项目名称及其总库存量的字典
最后,查询字典以查找其最大库存数量和所有具有此值的项目
int maxValue = itemCounts.Max(x => x.Value);
List<string> itemsWithMaxValue = itemCounts.Where(x => x.Value == maxValue)
.Select(x => x.Key).ToList();
欢迎来到Stackoverflow。到目前为止,为了自己解决这个问题,您尝试了哪些方法?欢迎使用堆栈溢出!您的问题包含一些很好的细节、示例输入和预期输出,这些都非常好。然而,你缺乏一个明确的问题,你是什么卡住了。另外,请编辑您的问题,以提供您迄今为止编写的任何代码。您如何将每行拆分为字段?您是在处理之前存储数据还是在处理“动态”数据?字符串[]allFiles=Directory.GetFilespath;整数计数=0;所有文件中的foreachvar行{List oneFile=new List这段代码是错误的,这是肯定的。这样我将计算所有产品的数量..但我不知道如何获得所有文件中计数最高的产品。你好,Peter。我试图实现您的代码,但出现了一个错误。类似于initializer的说法是,因为它没有实现'System.Collections.IEnum'抱歉,我对这一切都不熟悉:Peter。我试图将所有文本文件中的所有行放入新的文本文件中。我成功地做到了。程序完成后,我将使用System.IO.file.Deletepath删除它;但现在的问题是,我循环了所有行,并设法计数所有产品。但是,它们正在重复现在正在运行。例如,我得到了这样的结果。所有文件中水果的值都是50,这将重复同一行中水果的次数一样多。你知道如何绕过它吗?:@Tomo我的初始解决方案不完整并且有错误。我现在已经更新了它,因此,除了读取文件的代码外,现在应该会给出所需的结果。Amazing、 非常感谢你!
int maxValue = itemCounts.Max(x => x.Value);
List<string> itemsWithMaxValue = itemCounts.Where(x => x.Value == maxValue)
.Select(x => x.Key).ToList();