我有一个班级:
[DataContract]
public class InventoryItem : NotifyPropertyChangeObject
{
private Guid _inventoryItemUid;
private string _description;
private bool _isActive;
[DataMember]
public Guid InventoryItemUid {
get { return _inventoryItemUid; }
set { ApplyPropertyChange<InventoryItem, Guid>(ref _inventoryItemUid, o => o.InventoryItemUid, value); }
}
[DataMember]
public string Description {
get { return _description; }
set { ApplyPropertyChange<InventoryItem, String>(ref _description, o => o.Description, value); }
}
[DataMember]
public bool IsActive {
get { return _isActive; }
set { ApplyPropertyChange<InventoryItem, Boolean>(ref _isActive, o => o.IsActive, value); }
}
public void CustomMethod()
{
// here some code....
}
}
在我的应用程序代码中,我得到了List<InventoryItem>
:
List<Entities.InventoryItem> items = new List<Entities.InventoryItem>();
var newItem = new Entities.InventoryItem();
using (Logistics.Data.Warehouse svc = new Data.Warehouse())
{
items = svc.GetInventoryItems().ToList();
}
我需要调用List<InventoryItem>
方法CustomMethod()
中的每个项目。
在性能方面,最好的方法是什么?
我知道我可以做foreach
但是如果我获得5,000行,那么foreach
可能对性能不利。实际上这个CustomMethod()
就像初始化代码一样。
答案 0 :(得分:0)
如果您的列表是一个巨大的列表,您可以将它分成20个项目组并在每个项目上并行执行:
private void CustomVoid(string s)
{
}
和
List<string> items = new List<string>();
for (int i = 0; i <= items.Count / 20; i++)
{
List<string> smallList = items.Skip(i * 20).Take(20).ToList();
smallList.AsParallel().ForAll(sm => CustomVoid(sm));
}
在下面的评论中建议忘记循环并仅使用此:
items.AsParallel().ForAll(sm => CustomVoid(sm));
这可能会有更好的表现。
我希望它有所帮助。