将通用列表传递给方法

时间:2012-09-30 05:02:23

标签: c#

我有一个应用程序将解析excel文件并添加一列,然后生成一个包含结果的新CSV文件。我能够在文件中创建我想要的项目列表,但我无法弄清楚如何将该列表传递给生成新文件的方法。

我有以下课程:

public class LocationData
{
    public string PostalCode { get; set; }
    public string Partner { get; set; }
    public string LocationID { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
    public string Market { get; set; }
}

和以下代码将数据放入列表中:

LocationData Locationdata = new LocationData()
{
    PostalCode = location[0],
    Partner = location[1],
    LocationID = location[2],
    Name = location[3],
    Country = location[4],
    Market = repository.GetMarketsForPostalCode(location[0])
}

我也有创建csv的方法,我需要传递列表信息,但是我收到错误:

  

foreach语句无法对“app.LocationData”类型的变量进行操作,因为“app.LocationData”不包含“GetEnumerator”的公共定义

2 个答案:

答案 0 :(得分:0)

我认为你误解了C#中的列表是什么。我认为您需要List数据类型。试试这个:

List<string> Locationdata = new List<string>()
  {
    location[0],
    location[1],
    location[2],
    location[3],
    location[4],
    repository.GetMarketsForPostalCode(location[0])
  };

答案 1 :(得分:0)

您的csv功能将如下所示

        public void GenerateCSV(List<LocationData> data)
    {
        foreach (LocationData d in data)
        {
            //put line in csv as
            string s = d.PostalCode + "," d.Partner + _"," + d.LocationID...... + Environment.NewLine;
        }
    }

您的班级声明将保持不变

public class LocationData
{
    public string PostalCode { get; set; }
    public string Partner { get; set; }
    public string LocationID { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
    public string Market { get; set; }
}

现在您需要先在列表中添加所有数据 你会做这个

            List<LocationData> lst = new List<LocationData>();

        LocationData ld = new LocationData();
        ld.LocationID = "0";
        ld.Market = "market";

        lst.Add(ld);
        ........
        GenerateCSV(lst);