我正在尝试循环访问来自前端的数据

I am trying to loop through data that is coming in from the front end

我有通过前端到后端方法传入的数据。一旦数据进来,我需要遍历它并将每个对象输出到文本文件。在代码片段中 pi.GetValue(order) returns 正确的值。我需要单独访问这些值并将它们输入到文本文件中。我是 C# 的新手。在 javascript 世界中,语法将被 pi 映射到属性,然后访问值将是 pi.CartNumber, pi.LineNumber, 等。

我已经尝试了显示的代码,我也尝试过使用 GetEnumerator() 方法

Model:
public class OrderDetails
    {
        public int Id { get; set; }
        public int CartNumber { get; set; }
        public int CustomerId { get; set; }
        public int LineNumber { get; set; }
        public string PartNumber { get; set; }
        public int Qty { get; set; }
        public int SalesLocation { get; set; }
    }

Repository Method:

public async Task<OrderDetails> AddOrder(OrderDetails order)
        {
            await _context.OrderDetails.AddAsync(order);

            await SaveAll();

            StringBuilder sb = new StringBuilder();

            PropertyInfo[] properties = order.GetType().GetProperties();

            var date = DateTime.Now.ToString("yyyyMMdd");

            using (StreamWriter writer = new StreamWriter(($"Y:\WOL-0{order.CartNumber}-{order.CustomerId}-{date}-085715.txt")))
            {

                foreach (PropertyInfo pi in properties)
                {
                    Console.WriteLine(pi.GetValue(order));

                    writer.WriteLine($"0{order.CartNumber}  {order.LineNumber}  {order.PartNumber}  {order.Qty} EA          {order.SalesLocation}   {order.SalesLocation}                                   EA                      Y                                                       ");

                }

            }


            return order;
        }

当有多个输入来自数据时,预期结果将在文件中显示多行。实际结果是它在数据中首先写入 6 行。

编辑:

这是一行的示例。

45588   1   DEWDC385K   1   EA  228.4832        101 101                                 EA                      Y   

(1) 这里不需要反射(pi-东西)。 (2) 您的 AddOrder 方法只接受单个 OrderDetails-对象,因此您不能进行任何循环。

更新:实际问题是文件中只有一行文本,尽管随后有多个 AddOrder 调用。我修改了 StreamWriter 初始化,现在它将行附加到文件而不是在写入之前清除它。

下面是 AddOrder 的简化版本,它处理 OrderDetails 对象并在成功保存后将记录写入文件。

public class OrderDetails
{
    public int Id { get; set; }
    public int CartNumber { get; set; }
    public int CustomerId { get; set; }
    public int LineNumber { get; set; }
    public string PartNumber { get; set; }
    public int Qty { get; set; }
    public int SalesLocation { get; set; }
}

public async Task<OrderDetails> AddOrder(OrderDetails order)
{
    await _context.OrderDetails.AddAsync(order);
    await SaveAll();
    var date = DateTime.Now.ToString("yyyyMMdd");

    using (StreamWriter writer = new StreamWriter($"Y:\WOL-0{order.CartNumber}-{order.CustomerId}-{date}-085715.txt", true))
    {
        writer.WriteLine($"0{order.CartNumber}  {order.LineNumber}  {order.PartNumber}  {order.Qty} EA          {order.SalesLocation}   {order.SalesLocation}                                   EA                      Y                                                       ");        
    }
    return order;
}