C# 在foreach中更新变量

C# 在foreach中更新变量,c#,C#,我有一个关于通过引用更新对象的问题,不确定到底发生了什么 我需要删除一个规则列表,对于日志记录,我需要加载另一个字段 ruleItem.ReferencedItemValue = eventEntity.Title; 什么时候 被称为ReferencedItemValue时未填充 有什么想法、建议、替代方案吗? 谢谢 代码: 试试这个: rules.ForEach(showRule => { var item = showRule; var sho

我有一个关于通过引用更新对象的问题,不确定到底发生了什么

我需要删除一个规则列表,对于日志记录,我需要加载另一个字段

ruleItem.ReferencedItemValue = eventEntity.Title;
什么时候

被称为
ReferencedItemValue
时未填充

有什么想法、建议、替代方案吗? 谢谢

代码:

试试这个:

rules.ForEach(showRule =>
    {
        var item = showRule;
        var showRuleResource = ToShowRuleResource(item);
        FillReferenceValue(showRuleResource);
        builder.LogDelete(item, showRuleResource.ToAuditLog(), "Logic Rule");
        });

从此功能开始挖掘

private void FillRuleItem(RuleItemResource ruleItem)
这似乎是一种压力

var eventEntity = uow.Context.Events.FirstOrDefault(e => e.Id == ruleItem.ReferencedItemId.Value);

为null。

并且您确定
FillRuleItem()
中的
eventEntity
不为null?你在调试器下运行过吗?另外,
RuleItemResource
是一个类,而不是一个结构,我想?我不确定
FillReferenceValue()
中的
.ToList()
是否有必要。@MatthewWatson在
FillRuleItem()
@DGibbs中的赋值之前有一个空检查,这就是我问的原因。如果eventEntity始终为null,则不会发生任何赋值操作,这正是OP所要求的。您在调试器中已完成此操作吗?我已使用调试器介入,并且eventEntity不是null,可能是一个闭包?:)Resharper没有指出,但我会尝试一下,无论如何是的,读一下Eric lippert的这篇博文:检查过了,它不是空的,我在你的代码中没有看到任何犯罪行为。它可以是linq的“延迟加载”,也可以是代码中特定位置的其他代码。可能showRuleResource.ToAuditLog()修改值。
private void FillRuleItem(RuleItemResource ruleItem)
var eventEntity = uow.Context.Events.FirstOrDefault(e => e.Id == ruleItem.ReferencedItemId.Value);