Передача общего списка методу

81
7

У меня есть приложение, которое проанализирует файл 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",

спросил(а) 2020-04-04T02:27:43+03:00 6 месяцев, 3 недели назад
1
Решение
129

Ваша функция 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);

ответил(а) 2020-04-04T02:39:51.416831+03:00 6 месяцев, 3 недели назад
41

Я думаю, вы не понимаете, что такое список на С#. Мне кажется, вам нужен тип данных List. Попробуй это:


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

ответил(а) 2020-04-04T02:27:43+03:00 6 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема