更改非常大的集合中的值(10,000)

Upe*_*dra 2 .net c# collections

我正在将一个非常大的文件(2-3 GB的文本)导入到一个集合中,一次10,000个.我需要将某些业务规则应用于集合中包含的值.最好的方法是什么?

最初的想法是创建一个List<>自定义类,但它很重要.此外,我不确定如何有效地更改列表中的值.例如,对于列表中的所有项目,如果属性x是"abc",我需要将其更改为"xyz".

建议?

Jon*_*eet 5

使用a List<T>应该绝对没问题.如果你只需要迭代,你可能想考虑使用a LinkedList<T>,但我希望IO 能让这里的其他所有东西相形见绌.

至于你的改变:

foreach (var item in list)
{
    if (item.Property == "abc")
    {
        item.Property = "xyz";
    }
}
Run Code Online (Sandbox Code Playgroud)

... IMO就像阅读一样简单.你可以使用,List<T>.ForEach如果你真的想要,或LINQ - 但我通常不喜欢在查询结果中更改值,如果它会改变结果.例如:

// I dislike doing this, though it would work:
foreach (var item in list.Where(x => x.Property == "abc"))
{
    item.Property = "xyz";
}
Run Code Online (Sandbox Code Playgroud)

  • @DanielHilgarth:感觉太接近于修改迭代器(它会破坏).例如,如果你开始在查询中使用`XDocument`来处理它,那么它将会中断 - 在这种情况下它会*工作,但是它太靠近了. (4认同)