如何在 with 表达式中访问记录的原始值

How to access the original value of a record in a with expression

给出记录

public record Address(string Name);

如何在 with 表达式中访问 属性 的原始值?我想做的是:

var address = new Address("foo");
var extendedAddress = address with { Name = $"{Name} - bar" }; // does not compile

所以 extendedAddress == "foo - bar".

有没有一种方法可以引用被覆盖的原始记录,以便可以“扩展”值?

更具体

我给出的例子具有误导性,因为可以简单地做:

var extendedAddress = address with { Name = $"{address.Name} - bar" };

但我正在寻找的是在单个表达式中实现这一点。类似于:

customers.Select(x => x.GetAddress() with Name = $"{Name} - bar")

这里没有自动的,有充分的理由:Name 已经有解析规则(一个实例成员 this.Name,一个静态 Name,一个叫做 Name 的类型, ETC)。只需从本地使用 address.Name,也许通过 LINQ

中的 let 表达式