如何在 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
表达式
给出记录
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
表达式