【发布时间】:2009-12-30 01:45:06
【问题描述】:
我必须制作这个 CSV 布局,但有点不确定如何去做。
我有一个 Order 类,我必须将其转换为 CSV 文件。
public class Order
{
public int ID {get; set;}
public int Created {get;set;}
public List<Item> Items {get;set;}
}
public class Item
{
public string Sku {get;set;}
public int Quantity {get;set;}
}
所以每一行代表一个订单。如果订单中包含超过 2 个项目,我将不得不继续到下一行,将所有内容留空,除了 sku、数量和特定字段。
如果从上一行继续,最后一个字段将为“Y”,否则为“N”。
所以我有:
List<Order> orders = Db.GetOrders();
因此,CSV 的示例输出将是:
"orderID", "Created", "Item01", "quantity01", "Item02", "N"
如果超过2个,就必须输出:
"orderID", "Created", "Item01", "quantity01", "Item02", "N"
"", "", "Item03", "quantity03", "", "", "Y"
所以上面的订单有 3 个项目,请注意 Item#4 的占位符仍然存在,但只是空的双引号。
所以每个字段都是必填的。
我将如何制作这个?
到目前为止,我有:
StringBuilder sb = new StringBuilder();
for(int x = 0; x < orders.Count; x++)
{
Order o = orders[x];
if(x % 2 = 0)
{
sb.Append(o.ID).Append(",");
sb.Append(o.Created).Append(",");
}
}
我想的诀窍是弄清楚我是否需要继续下一行,然后如果我的行中少于 2 个项目,我必须填补任何空白位置? p>
(您可以忽略输出中的任何错误字符,我稍后会处理,谢谢)
【问题讨论】:
-
吃mor chikin。接受早上的回答。