在foreach循环中创建和调用对象?

时间:2013-12-10 12:26:11

标签: c# arrays loops object

初学者程序员在这里请尽量保持(解释)答案。 对于作业,我们得到了一个包含大量行的文本文件。 每一行都是一个不同的订单'具有订单号,位置,频率(每周的次数)以及一些其他参数。 例如:

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

我已经做好了这一行,以便读取每一行并将其存储在一个带

的字符串中
string[] orders = System.IO.File.ReadAllLines(@<filepath here>);

我已经成立了一个名为&#34; Order&#34;其中包含所有属性的get + set,如ordernumber等。

现在我仍然坚持如何在那里获得价值。我知道字符串拆分如何工作,但不知道如何在循环中创建唯一对象。 我需要为每一行创建一个新订单,然后分配Order.ordernumber,Order.location等。

任何帮助都会非常感谢!

3 个答案:

答案 0 :(得分:2)

一个简单的方法是让一个类来定义这样的命令:

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]
  });
}

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

答案 1 :(得分:0)

除非我误解......你的意思是这样吗?

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.

答案 2 :(得分:0)

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

  

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