使用字典对文本文件中多行和多列的值求和

  • 本文关键字:求和 字典 文本 文件 c#
  • 更新时间 :
  • 英文 :


我的文本数据格式为:

OrderID:100,ItemID:1,Price:1000 //Row1
OrderID:101,ItemID:2,Price:200  //Row2
OrderID:102,ItemID:3,Price:100  //Row3

我需要Totalitems:3totalPrice:1300我不知道用哪种方法来获得这个问题的输出使用Indexof访问或其他东西

任何帮助都是感激的。

一种方法是首先使用File.ReadAllLines(fileName)读取文件中的所有行。然后你可以遍历这些行,解析并聚合你需要的信息。

var lines = File.ReadAllLines(fileName);
int totalItems = 0;
decimal totalPrice = 0;
foreach (var line in lines)
{
var columns = line.Split(',');
var priceColumn = columns[2];
var price = decimal.Parse(priceColumn.Split(':')[1]);
totalItems++;
totalPrice += price;
}
Console.WriteLine($"Total items: {totalItems}");
Console.WriteLine($"Total price: {totalPrice}");

对于更复杂的CSV文件或更高级的功能,您可以查看CsvHelper,它对我来说工作得很好。

// parse the price
const string sep = ",Price:";    
// initial tuple for sum&count, aka "seed"            
(decimal sum, int count) = (0,0); 
var lines  = File.ReadAllLines(someCsvFilePath);
var result = lines.Aggregate((sum, count),
(curr, line) => line?.IndexOf(sep) is {} pos and > -1
&& decimal.TryParse(line.Substring(pos + sep.Length), out var prc)
? (curr.sum + prc, curr.count + 1) : curr);
Console.WriteLine("Sum: {0:N0}, TotalItems: {1:N0}", result.sum, result.count);

最新更新