FieldCache is a good replacement for Lazy<T> for records, when you don't want to override default ctor/equals/etc, but you want a property to be lazily initialized. See the repo https://github.com/WhiteBlackGoose/FieldCache
$ dotnet add package FieldCacheNo README available.