我正在导入一个非常大的文件(2-3 GB的文本)到一个集合,一次10,000。我需要将某些业务规则应用于集合中包含的值。最好的方法是什么?
最初的想法是创建一个自定义类的List<>,但它变得非常繁重。此外,我不确定如何有效地更改列表中的值。例如,对于列表中的所有项,如果属性x是"abc",我需要将其更改为"xyz“。
有什么建议吗?
发布于 2012-03-28 20:31:17
使用List<T>应该是完全可以的。如果你只需要迭代,你可能会考虑使用LinkedList<T>,但我希望IO会让这里的其他一切都相形见绌。
至于你的改变:
foreach (var item in list)
{
if (item.Property == "abc")
{
item.Property = "xyz";
}
}..。就像它读起来一样简单,国际海事组织。如果你真的想要,你可以使用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";
}发布于 2012-03-28 20:36:32
为什么不在将项放入集合之前从流中获取值时应用业务规则。
发布于 2012-03-28 20:48:04
我建议您使用内存中的数据库,这将帮助您有效地执行获取、更新操作。结果代码将更易于维护,因为您将使用声明性逻辑而不是命令式逻辑。如果这是你工作场所的一个项目,请这样做。
https://stackoverflow.com/questions/9907496
复制相似问题