我正在尝试循环访问来自前端的数据
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;
}
我有通过前端到后端方法传入的数据。一旦数据进来,我需要遍历它并将每个对象输出到文本文件。在代码片段中 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;
}