Con*_*ark 5 c# lazy-loading list type-conversion
我有一个Lazy<List<T>>地方T是一个类,它有一个巨大的字符串和有关文件的元数据.我们称之为财产HugeString和财产Metadata
我有这个类U,它具有相同的属性HugeString,等等.我必须转换Lazy<List<T>>为Lazy<List<U>>不加载所有东西.
可能吗 ?
这是我创建列表的地方,在该方法中我获取有关文件和文件本身的信息:
entity.VersionedItems =
new Lazy<List<VersionedItemEntity>>(
() => VersionedItemEntity.GetFromTFSChanges(entity,chng.Changes));
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的(评论)
ChangesetList.Add(
new HistoryLogEntryModel()
{
Revision = changeset.Changeset.ToString(),
Author = changeset.User,
Date = changeset.Date.ToString("dd/MM/yyyy"),
Message = changeset.Comment,
//VersionedItems = changeset.VersionedItems
}
Run Code Online (Sandbox Code Playgroud)
但是HistoryLogEntryModel具有不同版本的VersionedItems.而且我需要转换一些变量.如果我将一个东西转换成另一个东西,它会加载所有东西,这将是不必要的和缓慢的.
这是正确的方法吗?我怎么能做到这一点?
谢谢你.
〜
您应该能够将其包装Lazy<List<T>>在Lazy<List<U>>.
var uLazy = new Lazy<List<U>>(() => tLazy.Value.Select(t => (U)t).ToList());
Run Code Online (Sandbox Code Playgroud)