Сравнить данные списка с вводом readline - PullRequest
0 голосов
/ 27 апреля 2018

Я читаю текстовый файл в массив, а затем беру данные из массива и помещаю их в список пользовательских типов.

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

текстовый файл отформатирован так

john
smith
js@123.456
123456789
123

jane
doe
jd@123.456
987654321
1456

Я могу получить код для печати каждого элемента в списке, но не могу найти способ получить код для проверки данных в списке по строке readline. Как мне это сделать?

Я пытался использовать как foreach, так и цикл for. я попытался использовать новые переменные типа int для for и foreach loop

Второй вопрос, могу ли я иметь его так stylistL, становится stylist1, stylist2, ... и так далее, чтобы он масштабировался с данными в файле txtx?

1 Ответ

0 голосов
/ 27 апреля 2018

Чтобы заполнить 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]
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...