【问题标题】:Creation and recalling of objects in a foreach loop?在 foreach 循环中创建和调用对象?
【发布时间】:2013-12-10 12:26:11
【问题描述】:

这里是初学者程序员,所以请尽可能简单地回答(解释)。 对于一个作业,我们得到一个包含大量行的文本文件。 每行都是一个不同的“订单”,带有订单号、位置、频率(每周的次数)和一些其他参数。 示例:

18; New York; 3PWK; ***; ***;

我已经做到了,每一行都被读取并存储在一个字符串中

string[] orders = System.IO.File.ReadAllLines(@<filepath here>);

我还创建了一个名为“Order”的单独类,它为所有属性(如 ordernumber 等)提供了一个 get+set。

现在我被困在如何实际获取其中的值。我知道字符串拆分是如何工作的,但不知道如何在循环中制作独特的对象。 我需要为每一行创建一个新订单,然后分配 Order.ordernumber、Order.location 等的东西。

任何帮助将不胜感激!

【问题讨论】:

标签: c# arrays loops object


【解决方案1】:

一个简单的方法是创建一个类来定义这样的订单:

public class Order{
  public string OrderNumber{get;set;}
  public string OrderId{get;set;}
  public string OrderSomeThingElse{get;set;}
}

然后初始化一个List:

var orderList = new List<Order>();

然后循环并填充它:

foreach( var order in orders ){
  var splitString = order.Split(';');
  orderList.Add( new Order{
    OrderNumber = splitString[0],
    OrderId = splitString[1],
    OrderSomeThingElse = splitString[2]
  });
}

如果您想要一种简单但不那么优雅的方法,就是这样。

【讨论】:

  • @Naren - 确实应该。现在修好了。谢谢:)
【解决方案2】:

除了您已经收到的所有好的答案。我建议你使用File.ReadLines() 而不是File.ReadAllLines() 因为你正在读取大文件。

ReadLinesReadAllLines 方法的区别如下: 使用ReadLines 时,可以在返回整个集合之前开始枚举字符串集合;当您使用 ReadAllLines 时,您必须等待返回整个字符串数组才能访问该数组。因此,当您处理非常大的文件时,ReadLines 会更有效率。 MSDN

【讨论】:

    【解决方案3】:

    除非我误会了……你的意思是这样的吗?

    var ordersCollection = new List<Order>();
    
    foreach (var order in orders)
    {
        var o = new Order();
        o.PropertyName = ""; // Assign your property values like this
    
        ordersCollection.Add(o);
    }
    
    // ordersCollection is now full of your orders.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 2019-07-31
      • 1970-01-01
      • 2015-07-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多