gpt4 book ai didi

c# - 映射器使用多线程?

转载 作者:行者123 更新时间:2023-12-03 12:59:32 27 4
gpt4 key购买 nike

是否有一个Mapper使用多线程将一个列表映射到另一个列表?

var mappedItems = Mapper.Map<List<ItemDto>, ObservableCollection<Item>>(dtos);

显然, Mapper是将 ItemDto逐一处理为 Item的方法。此操作的字面意思是“请!请给我多线程!”。但是我找不到选项。我正在寻找类似的东西:
Parallel.ForEach(items, item =>
{
});

我找不到任何可以帮助我的东西:/

最佳答案

正如评论中已经提到的那样,您可能应该重新设计数据库逻辑,以便能够逐页查询数据,并在服务器或客户端使用一些过滤器。

但是,如果仍然需要转换/转换某些数据,想要在后台执行此操作并具有并行化代码的能力,则可以从 TransformBlock 中尝试TPL Dataflow,如下所示:

public class ItemDto { }
public class Item { }

var transform = new TransformBlock<ItemDto, Item>(dto => new Item(),
// all cores can be used for processing
new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = Environment.ProcessorCount });

var dtoList = new List<ItemDto>();
foreach (var item in dtoList)
{
transform.Post(item);
}

如您所见,block可以转换为 IObservable<ItemDto> ,并且可以轻松地与UI一起使用:
IObservable<Item> observable =  transform.AsObservable();

关于c# - 映射器使用多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42956512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com