我想復制BlockingCollection并編輯副本。
(dataModelCollection是副本DataModelListRaw)
當我這樣做時:
BlockingCollection<DataModel> dataModelCollection = DataModelListRaw;
while (dataModelCollection.TryTake(out _)) { }
由于參考,我也清楚了起源。
如果我為專案填寫新BlockingCollection專案,如下所示:
BlockingCollection<DataModel> dataModelCollection = new();
foreach(var datamodel in DataModelListRaw)
{
dataModelCollection.Add(datamodel);
}
while (dataModelCollection.TryTake(out _)) { }
有用。
但是有沒有更短更優雅的方式來做這個副本?也許是一種方法BlockingCollection?
uj5u.com熱心網友回復:
做就是了
var myCopy = dataModelCollection.ToList();
這將使用 IEnumerable 介面遍歷集合并復制所有專案。然后,您可以對所需的串列進行任何編輯。如果您需要一個實際的阻塞集合,您需要創建一個新集合:
var blockingCollectionCopy = new BlockingCollection<DataModel>(new ConcurrentQueue<DataModel>(myCopy ));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/466042.html
上一篇:如何對嵌套串列進行兩次切片?
下一篇:迭代拆分串列元素
