如何使用 RuleForEach 验证集合项

Iva*_*ono 7 c# fluentvalidation

我一直在使用(成功)以下验证:

RuleFor(x => x.Items)
  .SetCollectionValidator(new ItemValidator())
  .Must(coll => coll.Sum(item => item.Percentage) == 100)
  .When(x => x.Items != null);
Run Code Online (Sandbox Code Playgroud)

由于上述SetCollectionValidator内容(将)被弃用,我将其更改为:

RuleForEach(x => x.Items)
  .SetValidator(new ItemValidator())
  .Must(coll => coll.Sum(item => item.Percentage) == 100)
  .When(x => x.Items != null);
Run Code Online (Sandbox Code Playgroud)

然而,Sum已经不被认可了。

我怎样才能解决这个问题?

Ade*_*mak 4

您可以使用两个单独的规则。其中之一是验证项目,另一项用于验证集合。

RuleForEach(x => x.Items)
  .SetValidator(new ItemValidator());

RuleFor(x => x.Items)
  .Must(coll => coll.Sum(item => item.Percentage) == 100)
  .When(x => x.Items != null);
Run Code Online (Sandbox Code Playgroud)