gpt4 book ai didi

c# - 使用linq c#计算CSV文件中一列的平均值

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:56 26 4
gpt4 key购买 nike

我真的是 c# 的新手,但我真的很想开始使用 linq 从 excel 电子表格中提取简单的信息。

我很不好意思问这个问题,但我似乎找不到解决办法。基本上,我想要的只是在 CSV 文件中找到平均捐款数额。

The Excel file layout

到目前为止,这是以下代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpTest
{
class Program
{
public string Donor { get; set; }
public DateTime Date { get; set; }
public decimal Amount { get; set; }
public string Charity { get; set; }

static void Main(string[] args)
{
{

var file = "C:\\Users\\user\\Desktop\\Donations.csv".AsFile();

File.ReadAllLines(file).Select(x => x.Split('\n')).Average(x => x.Count());


}

}
}

问题是我知道这是错误的,因为我只想要 Amount 中的值。对于这样的事情,我确信我应该使用 GroupBy(),但是我似乎无法提取公共(public)类 Amount。如果有人能指出正确的方向,我将非常感激。非常感谢。

最佳答案

创建一个对象模型来保存数据是一个好的开始

public class Donation {
public string Donor { get; set; }
public DateTime Date { get; set; }
public decimal Amount { get; set; }
public string Charity { get; set; }
}

接下来您要解析 CSV 文件中的数据。

类似于 CSVHelper将有助于将数据解析为可用对象。

var textReader = new StreamReader("C:\\Users\\user\\Desktop\\Donations.csv");
var csv = new CsvReader( textReader );
var records = csv.GetRecords<Donation>();

从那里使用 LINQ 计算平均值是对已解析集合调用扩展方法的简单问题。

var average = records.Average(_ => _.Amount);

关于c# - 使用linq c#计算CSV文件中一列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51784780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com