IEnumerable<T>
s do not guarantee that updated values will persist across enumerations. For instance, a List
will return the same set of objects on every iteration, so if you update a property, it will be saved across iterations. However, many other implementations of IEnumerable
s return a new set of objects each time, so any changes made will not persist.
If you need to store and update the results, pull the IEnumerable<T>
down to a List<T>
using .ToList()
or project it into a new IEnumerable<T>
using .Select()
with the changes applied.
To specifically apply that to your code, it would look like this:
var transactions = (from t in db.Transactions
where t.SellingPrice != 0
select t).ToList();
var taAgents = (from ta in db.TransactionAgents
select ta).ToList();
foreach (var transaction in transactions)
{
foreach(var agent in taAgents)
{
agent.AgentCommission = ((transaction.CommissionPercent / 100) * (agent.CommissionPercent / 100) * transaction.SellingPrice) - agent.BrokerageSplit;
}
}
dataGridView1.DataSource = taAgents;