C#-如何转换懒惰<;列表<;T>&燃气轮机;懒惰<;列表<;U>>;?
我有一个C#-如何转换懒惰<;列表<;T>&燃气轮机;懒惰<;列表<;U>>;?,c#,list,lazy-loading,type-conversion,C#,List,Lazy Loading,Type Conversion,我有一个Lazy,其中T是一个类,它有一个巨大的字符串和关于文件的元数据。 让我们称它们为PropertyHugeString和PropertyMetadata 我有一个U类,它的属性与其他属性相同。我必须将Lazy转换为Lazy,而不必加载所有内容 可能吗 这是我创建列表的地方,在该方法中,我获得有关文件和文件本身的信息: entity.VersionedItems = new Lazy<List<VersionedItemEntity>>( (
Lazy
,其中T是一个类,它有一个巨大的字符串和关于文件的元数据。
让我们称它们为PropertyHugeString
和PropertyMetadata
我有一个U类,它的属性与其他属性相同。我必须将Lazy
转换为Lazy
,而不必加载所有内容
可能吗
这是我创建列表的地方,在该方法中,我获得有关文件和文件本身的信息:
entity.VersionedItems =
new Lazy<List<VersionedItemEntity>>(
() => VersionedItemEntity.GetFromTFSChanges(entity,chng.Changes));
但是HistoryLogEntryModel有不同版本的VersionedItems。我需要转换一些变量。如果我将一件事转换成另一件事,它会加载所有的东西,这将是不必要的和缓慢的
这是正确的方法吗?我还能怎样做到这一点
谢谢你
~您应该能够将
惰性
包装在惰性
中
var-uLazy=newlazy(()=>tLazy.Value.Select(t=>(U)t.ToList());
或使用某种扩展方法:
public static class ExtensionMethods
{
public static Lazy<U> Convert<T,U>(this Lazy<T> source, Func<Lazy<T>, Lazy<U>> convert)
{
return convert(source);
}
}
Lazy<List<int>> source = new Lazy<List<int>>();
Lazy<List<string>> converted = source.Convert(x =>
{
return new Lazy<List<string>>()
{
Items = x.Items.ConvertAll<string>(i => i.ToString())
};
});
公共静态类扩展方法
{
公共静态惰性转换(此惰性源,Func Convert)
{
返回转换(源);
}
}
Lazy source=新的Lazy();
Lazy converted=source.Convert(x=>
{
返回新的Lazy()
{
Items=x.Items.ConvertAll(i=>i.ToString())
};
});
我相信有一个更整洁的方法可以做到这一点
var uLazy = new Lazy<List<U>>(() => tLazy.Value.Select(t => (U)t).ToList());
public static class ExtensionMethods
{
public static Lazy<U> Convert<T,U>(this Lazy<T> source, Func<Lazy<T>, Lazy<U>> convert)
{
return convert(source);
}
}
Lazy<List<int>> source = new Lazy<List<int>>();
Lazy<List<string>> converted = source.Convert(x =>
{
return new Lazy<List<string>>()
{
Items = x.Items.ConvertAll<string>(i => i.ToString())
};
});