c# 4.0 - Groovy在C#上的.collect()等效物

本文关键字:collect 上的 Groovy | 更新日期: 2023-09-27 17:57:17

我想知道 C# 中是否有一种方法可以将集合的每个元素转换为我喜欢的东西?

这是我当前汇总一行数据的代码:

// C#
int sum = 0;
foreach (DataGridView row in gridView.Rows)
{
   sum += Convert.ToInt32(row.Cells["Amount"]);
}

我正在寻找使用 C# .Sum()方法的解决方案。

在 groovy 中,我可以这样做来总结集合:

// Groovy
int sum = rows.collect { it.cells.amount as Integer }.sum()

这在 C# 中可能吗,比如 LINQ 或其他东西?

c# 4.0 - Groovy在C#上的.collect()等效物

你可以

试试LINQ。

您需要

添加对 System.LINQ 的引用(以及一个 using System.Linq; ),如果还没有的话。

然后,您可以使用以下语句对所需的值求和:

int sum = gridView.Rows.Sum(row => Convert.ToInt32(row.Cells["Amount"]));

是的,您可以使用Sum扩展方法:

var sum = gridView.Rows.OfType<DataGridViewRow>().Sum(row => Convert.ToInt32(row.Cells["Amount"]));

您应该首先使用OfType,因为DataGridViewRowCollection没有实现IEnumerable<T>,而只实现IEnumerable