Я читаю текстовый файл в массив, а затем беру данные из массива и помещаю их в список настраиваемых типов.
var StylistFile = File.ReadLines("stylist.txt").ToArray();
var lineCount = File.ReadLines("stylist.txt").Count();
int k = (lineCount) / 6; // used tocalculates number of stylists by looking at the number of lines
int L = 1;
List <Stylist> stylists = new List<Stylist>();
for (L = 1;L <=k; L++)
{
string[] stylistsL = new string[6];
Stylist stylistL = new Stylist();
stylists.Add(stylistL);
foreach (var i in stylists)
{
stylistL.FirstName = StylistFile[((L - 1) * 6) + 0];
stylistL.LastName = StylistFile[((L - 1) * 6) + 1];
stylistL.Email = StylistFile[((L - 1) * 6) + 2];
stylistL.Phone = StylistFile[((L - 1) * 6) + 3];
stylistL.Rate = StylistFile[((L - 1) * 6) + 4];
stylistsL[0] = stylistL.FirstName;
stylistsL[1] = stylistL.LastName;
stylistsL[2] = stylistL.Email;
stylistsL[3] = stylistL.Phone;
stylistsL[4] = stylistL.Rate;
stylistsL[5] = "";
}
}
foreach (var i in stylists) // prints the stylists first and last names
{
Console.WriteLine(i.FirstName + " " + i.LastName);
}
string stylistSelected = Console.ReadLine();
//foreach (var z in stylists) // goes through each stylist in list
for (int z = 0; z <= stylists.Count; z++)
{
if ((stylistSelected == stylists[z].FirstName) || (stylistSelected == stylists[z].FirstName + " " + stylists[z].LastName)) // checks to see if stylistSelected match current stylists
{
Console.WriteLine(stylists[z].FirstName + " " + stylists[z].LastName);
код настраиваемого класса
public class Stylist
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Rate { get; set; }
}
файл txt отформатирован так
john
smith
[email protected]
123456789
123
jane
doe
[email protected]
987654321
1456
Я могу получить код для печати каждого элемента в списке, но я не могу найти способ получить код для проверки данных в списке по строке чтения, как мне это сделать?
Я пробовал использовать как foreach, так и петлю for. Я пробовал использовать новые переменные int как для цикла for, так и для цикла foreach
второй вопрос: можно ли сделать так, чтобы stylistL превратился в stylist1, stylist2, ... и так далее, чтобы он масштабировался вместе с данными с файлом txtx?
В чем смысл string[] stylistsL = new string[6];? Вы создаете его на каждой итерации, присваиваете некоторые значения, а затем его выбрасываете, когда цикл foreach завершается.
@RufusL Я подумал, что, поскольку txt-файл содержит 5 частей данных, за которыми следует пространство для каждого стилиста, мне нужно будет создать массив размером шесть, чтобы мне было легче перезвонить для данных позже в коде
что на самом деле означает «проверить данные»? Что вы имеете в виду под stylist1, stylist2, ...?
Если вы намеревались позже сослаться на массив из шести string, почему вы перезаписываете его элементы каждый раз, проходя впустую цикл? А зачем он вам и объект типа Stylist и то, и другое?





Чтобы заполнить List<Stylist> из вашего текстового файла, мы можем сделать что-то вроде следующего, где мы считываем файл в массив (игнорируя любые пустые строки), а затем устанавливаем счетчик цикла для увеличения на 5 на каждой итерации (поскольку каждые 5 строк представляют стилист), а внутри цикла мы устанавливаем свойства нового Stylist и добавляем его в наш List<Stylist>.
В приведенном ниже коде предполагается, что каждые 5 строк представляют стилиста (и игнорирует любые пустые строки в файле):
var fileLines = File.ReadAllLines(stylistFilePath)
.Where(line => !string.IsNullOrEmpty(line))
.ToList();
var stylists = new List<Stylist>();
// We have a condition to exit the loop if 'i + 4 < fileLines.Count'
// because we attempt to access item [i + 4] inside the loop.
for (int i = 0; i + 4 < fileLines.Count; i += 5)
{
stylists.Add(new Stylist
{
FirstName = fileLines[i],
LastName = fileLines[i + 1],
Email = fileLines[i + 2],
Phone = fileLines[i + 3],
Rate = fileLines[i + 4]
});
}
Вам не нужно делать
ReadLinesдважды.lineCount = StylistFile.Length;