C# 从十几个文本文件中检索信息

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[]

希望有人能帮助我

我有一个保存了一些文本文件的文件夹。所有文本文件都是相似的。它们看起来像这样:

12牛奶33 18/20/2020 15水果44 2018/20/2019

假设这是第二个

10可口可乐4 2019年1月2日 15水果5 2018/20/2020

所以首先是ID、姓名、计数和最后的日期。所以我循环浏览所有的文本文件,我想知道存储容量最高的产品是什么。所有文本文件都是相似的,但这并不意味着它们都有相同的产品

在这种情况下,我的程序应该是-15水果49

示例代码:

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();