Sum of a particular column using LINQ
c#, linq
Solution
You need to parse the string to `int` or `decimal`:
var matched = from r1 in dvtempPropertyRoomRatePromotion.ToTable().AsEnumerable()
join r2 in dvPropertyRooms.ToTable().AsEnumerable()
on r1.Field<DateTime>("RateDate").Date equals r2.Field<DateTime>("RateDate").Date
select decimal.Parse(r1.Field<string>("promotionValue"));
decimal sum = matched.Sum();
Note that i've also changed some other things like the redundant `where` (since you've already joined these tables) or the `Date` property of `DateTime`.
Apart from that
- why do you need the `DataView` at all? `ToTable` creates always a new `DataTable`. Why don't you use `Linq-To-DataSet` for all? I assume you've used the `DataView` for filtering, use `Enumerable.Where` instead. That would be more consistent, more efficient and more readable.
- why is the column `promotionValue` a string? You should store it as a numeric type.
Problem
Using the below mentioned query I am getting the all the values of a column called promotionValue . I want to get the sum of all the values of *matched * ``` var matched = from table1 in dvtempPropertyRoomRatePromotion.ToTable().AsEnumerable() join table2 in dvPropertyRooms.ToTable().AsEnumerable() on table1.Field<DateTime>("RateDate") equals table2.Field<DateTime>("RateDate") where table1.Field<DateTime>("RateDate") == table2.Field<DateTime>("RateDate") select table1.Field<string>("promotionValue"); ```