相关疑难解决方法(0)

更新IEnumerable中的项目属性但该属性未保留设置?

我有两个表:Transactions和TransactionAgents.TransactionAgents有一个名为TransactionID的Transactions的外键.很标准.

我也有这个代码:

BrokerManagerDataContext db = new BrokerManagerDataContext();

var transactions = from t in db.Transactions
                   where t.SellingPrice != 0 
                   select t;

var taAgents = from ta in db.TransactionAgents
               select ta;

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;
Run Code Online (Sandbox Code Playgroud)

基本上,TransactionAgent有一个名为AgentCommission的属性/列,对于我的数据库中的所有TransactionAgent,它都是null.

我的目标是执行您在foreach(var agent in taAgents)修补每个代理的值时所看到的数学运算,使其不为空.

奇怪的是,当我运行此代码和断点时,agent.AgentCommission = (formula)它显示正在为AgentCommissision计算值并且对象正在更新,但在我的数据网格中显示(仅用于测试)之后,它不显示它计算的值.

所以,对我而言,似乎该属性并未永久设置在该对象上.更重要的是,如果我通过更新将这个新更新的对象保留回数据库,我怀疑计算的AgentCommission将在那里设置.

如果没有以相同的方式设置我的表,是否有人可以查看代码并查看为什么我不保留该属性的值?

c# linq

56
推荐指数
1
解决办法
3万
查看次数

更新IEnumerable中的对象<>不更新?

我有一个包含大约80,000行的POCO类型的IEnumerable和一个包含行子集的数据库表(L2E/EF4),其中存在"错误/差异"(约5000行,但经常重复以提供约150个不同的行)项)

以下代码获取不同VSACode的"错误",然后尝试更新完整的结果集,更新JUST匹配的行...但它不起作用!

var vsaCodes = (from g in db.GLDIFFLs
  select g.VSACode)
  .Distinct();

foreach (var code in vsaCodes)
 {
  var hasDifference = results.Where(r => r.VSACode == code);
  foreach (var diff in hasDifference)
   diff.Difference = true;
 }

 var i = results.Count(r => r.Difference == true);
Run Code Online (Sandbox Code Playgroud)

在此代码之后,i = 0

我也尝试过:

foreach (var code in vsaCodes)
    {
        results.Where(r => r.VSACode == code).Select(r => { r.Difference = true; return r; }).ToList();
    }
Run Code Online (Sandbox Code Playgroud)

如何更新"结果"以仅设置匹配的差异属性?

c# linq ienumerable

6
推荐指数
1
解决办法
4126
查看次数

标签 统计

c# ×2

linq ×2

ienumerable ×1