gpt4 book ai didi

c# - 将子属性与父属性进行比较?

转载 作者:行者123 更新时间:2023-11-30 17:38:41 26 4
gpt4 key购买 nike

我有这两个类:

public class Master
{
public int? TotalAmount;
public ICollection<Detail> Details;
}

public class Detail
{
public int Amount;
}

我正在尝试创建一个规则,以便详细信息集合的总金额等于母版的总金额属性。

我正在尝试以下规则,但我无法访问主人的属性(property):

RuleFor(x => x.Details)
.Must(coll => coll.Sum(item => item.Amount) == x.TotalAmount)
.When(x => x.Details != null)
.When(x => x.TotalAmount.HasValue);

实现这种规则的正确方法是什么?

最佳答案

您可以只使用 Must 的另一个重载,如下所示:

RuleFor(x => x.Details)
.Must((master, details, ctx) => master.TotalAmount == details.Sum(r => r.Amount))
.When(x => x.Details != null)
.When(x => x.TotalAmount.HasValue);

但是请注意,正如评论中已经指出的那样,您不应使用验证来进行一致性检查。您只有一份数据(详细信息总和)。那么为什么不这样做呢:

public class Master {
public int? TotalAmount
{
get
{
if (Details == null)
return null;
return Details.Sum(c => c.Amount);
}
}

public ICollection<Detail> Details;
}

关于c# - 将子属性与父属性进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com