Groovy的.collect()等效于C#

时间:2016-07-18 05:39:00

标签: c# c#-4.0 groovy collections

我想知道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或其他什么?

2 个答案:

答案 0 :(得分:1)

你可以试试LINQ。

您需要添加对System.LINQ(和using System.Linq;)的引用,如果您还没有。

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

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

答案 1 :(得分:0)

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

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

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