我正在将一个非常大的文件(2-3 GB的文本)导入到一个集合中,一次10,000个。我需要将某些业务规则应用于集合中包含的值。最好的方法是什么?
最初的想法是创建一个自定义类的List<>
,但它非常重要。此外,我不确定如何有效地更改列表中的值。例如,对于列表中的所有项目,如果属性x是“abc”,我需要将其更改为“xyz”。
建议?
答案 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)
我建议您使用内存数据库,这将有助于您有效地执行提取,更新操作。生成的代码将更清晰,因为您将使用声明性逻辑而不是命令式逻辑。如果这是您工作场所的项目,请执行此操作。