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

时间:2012-03-28 12:28:17

标签: c# .net collections

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

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

建议?

3 个答案:

答案 0 :(得分:5)

使用List<T>应该绝对没问题。如果您只需要迭代,可能想要考虑使用LinkedList<T>,但我希望IO能够使其他所有内容相形见绌。

至于你的改变:

foreach (var item in list)
{
    if (item.Property == "abc")
    {
        item.Property = "xyz";
    }
}
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";
}

答案 1 :(得分:3)

为什么在将项目放入集合之前从流中获取值时应用业务规则。

答案 2 :(得分:0)

我建议您使用内存数据库,这将有助于您有效地执行提取,更新操作。生成的代码将更清晰,因为您将使用声明性逻辑而不是命令式逻辑。如果这是您工作场所的项目,请执行此操作。