Here's what I'm trying to do:
IEnumerable<OfficeView> allOffices = GetAllOffices(); //this method also uses some linq query
foreach (var office in allOffices)
{
officeSales.Add(
new Tuple<int, decimal>(office.Id, GetSaleAmount(office.Id, someParams)));
}
public decimal GetAgentSaleAmount(int officeRef, someTypes someParams)
{
var q = ObjectQuery.Where
(i => i.officeId == officeRef && i.someOtherStuff == someParams)
.ToList();
return q.Sum(i => i.NetPrice);
}
I can't set MultipleActiveResultSets = true
. Instead, as suggested here, I tried to do .ToList()
before doing the summation, but got the same error. (and even if I wouldn't get the error, I think it would cause heavy load to fetch everything just to get the summation of one field)
I will be super thankful for any suggestion to solve this problem!
Update: The problem was all about GetAllOffices()
, which returned IEnumerable
(which leaves the DataReader
open). I changed the first line as below and it worked. Thanks a lot guys :)
IEnumerable<OfficeView> allOffices = GetAllOffices().ToList();