C#中在一个datatable里面 我如何把每一列求平均值
时间: 2024-02-03 22:15:28 浏览: 466
你可以使用以下代码来计算DataTable中每列的平均值:
```
DataTable dt = new DataTable(); // 假设你的DataTable对象是dt
foreach (DataColumn col in dt.Columns)
{
double avg = dt.AsEnumerable().Average(row => row.Field<double>(col));
Console.WriteLine("Average of column {0} is {1}", col.ColumnName, avg);
}
```
这里使用了`AsEnumerable()`方法和`Field<T>`方法来获取每个列的平均值。你也可以将结果保存到一个字典中,以便进一步处理。
相关问题
C# datatable 里规定列的平均值 在赋予到一个新datatable里
你可以使用 LINQ to DataSet 查询语言来计算 DataTable 列的平均值,并将结果赋给一个新的 DataTable。
下面是一个示例代码,假设你要计算 DataTable 中名为 "score" 的列的平均值,并将结果保存到一个新的 DataTable 中:
```csharp
// 假设你已经有了一个 DataTable 叫做 "myDataTable"
DataTable newDataTable = new DataTable();
// 添加一个新列到新 DataTable,用来保存平均值
newDataTable.Columns.Add("avgScore", typeof(double));
// 计算平均值,使用 LINQ to DataSet 查询语言
double avgScore = myDataTable.AsEnumerable()
.Average(row => row.Field<double>("score"));
// 创建一个新行,将平均值添加到新 DataTable 中
DataRow newRow = newDataTable.NewRow();
newRow["avgScore"] = avgScore;
newDataTable.Rows.Add(newRow);
```
在上面的代码中,我们使用 `AsEnumerable()` 方法将 DataTable 转换为 `IEnumerable<DataRow>` 类型,这样就可以使用 LINQ to DataSet 查询语言来查询数据。然后,我们使用 `Average()` 方法计算 “score” 列的平均值,并将结果保存到 `avgScore` 变量中。最后,我们创建一个新行,并将平均值添加到新 DataTable 中。
注意,我们在添加新列时使用了 `typeof(double)` 参数,这是因为我们要将平均值保存为一个双精度浮点数。如果你要保存为其他类型,可以相应地更改参数。
C# 有一个datatable 新增一行 显示后面几列的平均值
可以使用以下代码来实现你的需求:
```csharp
// 假设你已经创建了一个名为 dt 的 DataTable 对象,并添加了需要的列
// 创建新行
DataRow newRow = dt.NewRow();
// 在新行中填充数据,这里假设你需要计算的列为列1、列2和列3
newRow["列1"] = 10;
newRow["列2"] = 20;
newRow["列3"] = 30;
// 将新行添加到 DataTable 中
dt.Rows.Add(newRow);
// 计算后面几列的平均值,这里假设你需要计算的列为列2和列3
double sum = 0;
int count = 0;
for (int i = 1; i < dt.Columns.Count; i++) // 从第二列开始循环,因为第一列是行号
{
if (i >= 2) // 只计算第二列及以后的列
{
sum += Convert.ToDouble(newRow[i]);
count++;
}
}
double average = sum / count;
Console.WriteLine("平均值为:" + average);
```
请注意,这里假设你的 DataTable 对象的第一列是行号,因此在计算平均值时从第二列开始循环。如果你的 DataTable 对象没有行号列,或者行号列不是第一列,你需要相应地更改代码。
阅读全文