C#如何为列表中的每个项目调用方法<&燃气轮机;

C#如何为列表中的每个项目调用方法<&燃气轮机;,c#,C#,我有一门课: [DataContract] public class InventoryItem : NotifyPropertyChangeObject { private Guid _inventoryItemUid; private string _description; private bool _isActive; [DataMember] public Guid InventoryItemUid { get { return

我有一门课:

[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....
    }
}
[DataContract]
公共类清单项:NotifyPropertyChangeObject
{
私有Guid\u inventoryItemUid;
私有字符串描述;
私人楼宇是活跃的;
[数据成员]
公共Guid InventoryItemUid{
获取{return\u inventoryItemUid;}
设置{ApplyPropertyChange(ref _inventoryItemUid,o=>o.inventoryItemUid,value);}
}
[数据成员]
公共字符串描述{
获取{return\u description;}
集合{ApplyPropertyChange(ref _description,o=>o.description,value);}
}
[数据成员]
公共福利活动{
获取{return\u isActive;}
设置{ApplyPropertyChange(ref _isActive,o=>o.isActive,value);}
}
公共方法()
{
//这里有一些代码。。。。
}
}
在我的应用程序代码中,我得到一个
列表

List items=newlist();
var newItem=新实体。InventoryItem();
使用(Logistics.Data.Warehouse svc=new Data.Warehouse())
{
items=svc.GetInventoryItems().ToList();
}
我需要调用
列表中的每个项目
方法
CustomMethod()

就性能而言,最好的方法是什么


我知道我可以做一个
foreach
但是如果我得到5000行,那么
foreach
可能对性能不好。实际上,这个
CustomMethod()
就像一个初始值设定代码一样。

如果您的列表是一个巨大的列表,您可以将它分成20个项目,并对每个项目并行执行操作:

private void CustomVoid(string s)
{

}
以及:

那可能会有更好的表现


我希望它能有所帮助。

没有办法,您需要一个循环,但是如果您仍然需要为每行调用该方法,那么如果您有5行或5000行,又有什么关系呢?也许你可以解释一下这个方法是什么(除非它真的对每一行做了什么,那么就没有办法了)。如果需要对每一项调用它,为什么不把它放在构造函数中呢?这个类继承了另一个有构造函数的类,当我从我的服务中得到这个构造函数从未被调用的列表时,只有在创建类的新项时才会调用它。所以我需要调用该构造函数。所以如果您在InventoryItem中定义构造函数,它就不会被调用?为什么要将它分为20个项目,而不是让PLINQ决定如何优化它?这比只调用项目要慢。AsParallely您的意思是:
Parallel.ForEach(项目,新的并行选项{MaxDegreeOfParallelism=?),
您的建议是什么?20是一个样本号,他必须根据自己的情况选择。@Peter Bons。您不需要指定
MaxDegreeOfParallelism
,位于的文档会考虑何时覆盖默认设置。
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));