【发布时间】:2018-02-12 18:50:57
【问题描述】:
我有一个模型的 ICollection,我需要从模型中选择某些字段并从模型中创建一个 CSV 文件。现在我正在对模型进行 foreach 并拉取字段,然后像这样对它们进行污染:
foreach(OrderComposite ord in orders)
{
order += ord.Customer.EmailAddress.ToString() + "," + ord.OrderId.Value.ToString() + "," + ord.DateCreated.Value.ToString() + "," + ord.TotalSalePrice.Value.ToString() + "," + ord.TotalSaleTax.Value.ToString() + ",0,0," + ord.OrderStatus.ToString() + ",?,?,?,?" + ord.TotalDiscount.Value.ToString() + ",online";
}
这不是我想要的方式。我确信有一种方法可以通过 LINQ 执行此操作,但我在使 Order.Select 语句正常工作时遇到问题。我知道使用这种方法效率极低,所以我开始尝试:
using(var file = File.CreateText(settings.listrakProductFeed.ListrakOrderItemsFileLocation))
{
file.WriteLine(orders.Select(x => string.Join(",",x.Customer.EmailAddress.ToString(), x.OrderId.Value.ToString())));
}
这样更有效率吗?最终我会使用 WriteLineAsync,但一步一步来。
谢谢。
【问题讨论】:
-
这样更有效率吗?同样使用
.Select与foreach用于内存收集几乎相同,只是效率稍低 - 在大多数情况下无需真正担心。
标签: c# asp.net-mvc linq csv