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](https://stackoverflow.com/questions/15921821/error-there-is-already-an-open-datareader-associated-with-this-command-which-mu), 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();

```