tags:

views:

648

answers:

1

I have an array of DataRow objects in my C# project which I would like to Sum various fields from.

Instead of running through each row and totalling my own sums I noticed the DataRow[].Sum<> function but I am struggling to find any resources on the net on how to use it.

Any pointers in the right direction would be very helpful

:) Removed code example as it was wrong! All now works fine - the link helped cheers Marc.

+5  A: 

That is the LINQ Sum; and can be used:

var sum = rows.Sum(row => row.Field<int>("SomeColumn")); // use correct data type

(you can also pass in the column index or the DataColumn in place of the string)

for untyped datarows, or:

var sum = rows.Sum(row => row.SomeColumn);

for typed datarows.

MSDN has full documentation on this; for example, here is the overload I am using in the examples above.

Marc Gravell
Sorry I'm probably being really dumb here but haven't used LINQ before :) How do you get a reference to the row if I'm not iterating through the array?
Rich Andrews
The `Sum` method does the iteration. The " row => row.SomeColumn " (etc) could be interpreted as "given a row, do this", and is a delegate that is evaluated for each row. So in this case, it says "for each row, evaluate row.SomeColumn, summing them".
Marc Gravell
(so each time the "row => row.SomeColumn" operates, `row` is a different `DataRow`, if you see what I mean)
Marc Gravell
Add a link to some LINQ to Object documentation :)
Alex Bagnolini
@Alex - done...
Marc Gravell