【问题标题】:Updating new list of objects updates main list更新新的对象列表更新主列表
【发布时间】:2018-01-28 07:37:53
【问题描述】:

我有一个使用 linq ForEach 更新时获取的对象列表。问题是数据正在使用引用类型进行更新。我想用值类型更新它

我尝试进行克隆,但没有成功(不确定我是否遵循了正确的程序)。

【问题讨论】:

    标签: c# linq clone


    【解决方案1】:

    您的列表newSetRatioif 条件下被清空。如果该条件返回false,它将包含上一次迭代的值。由于它在每次迭代中填充,在条件之外,每当条件返回 false 时,assetSharingRatios 中的所有项目都将被添加,而列表之前不会被清除。因此,如果assetSharingRatios 没有更改并且您的代码返回falsenewSetRatio 将包含所有重复项。如果条件继续导致falsenewSetRatio 中的项目将增加三倍,依此类推。

    还有一点是你的最后一行代码contributePartnersData.assetSharingRatio = newSetRatio; 如果您修复了newSetRatio 行为,那么只要if 条件为false,添加到contributingPartnersData 中的最后一项将获得新的assetSharingRatio 值。不确定这是不是故意的,看起来有点奇怪。这就是为什么最后三行代码在“if”之外的原因吗?

    【讨论】:

    • 我尝试将行 newSetRatio = new List<AssetRatios>(); 放在 if 条件之外,但它不起作用,每当我更改列表 newSetRatio 的值时,它也会影响 assetSharingRatio 问题类似于link 中的问题,但我尝试了那里提供的解决方案,但它没有用
    • 对不起,我误解了你的问题。因此,当您在 newSetRatio' it updates values in assetSharingRatios 上执行 .Foreach 时,这是一个问题吗?如果是这样,请将 newSetRatio.AddRange(assetSharingRatios.Where.... 更改为 newSetRatio = new List<AssetRatios>(assetSharingRatios.Where... 并告诉我是否有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2013-11-03
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多