Как мне отсортировать CSV-файл в алфавитном порядке и как не показывать «скрытые» файлы в консоли с помощью моего кода

#c# #csv #sorting

#c# #csv #сортировка

Вопрос:

Мне нужно отсортировать мой csv-файл в алфавитном порядке и не показывать те, для которых он говорит «hidden» (он же. клиент 4 и клиент 5) это код:

 static void Main(string[] args)
    {
        ReadCSFVFile();
        Console.WriteLine();

    }

static void ReadCSFVFile()
    {
        var lines = File.ReadAllLines("Navigation.txt");
                  
        var list = new List<Company>();
        
        foreach (var line in lines)
        {              
            var values = line.Split(';' );
            var company = new Company() { ID = values[0], MenuName = values[1], ParentID = values[2], IsHidden = values[3], LinkURL = values[4] };
            list.Add(company);
               
         
        }

        list.ForEach(x => Console.WriteLine($"{x.ID}t {x.MenuName}t {x.ParentID}t {x.IsHidden}t {x.LinkURL}"));
        
    }

 public class Company 
    {  
        public string ID { get; set; }
        public string MenuName { get; set; }
        public string ParentID { get; set; }
        public string IsHidden { get; set; }
        public string LinkURL { get; set; }
    }
 

и это файл csv:

  • ID;MenuName;ParentID;isHidden;LinkURL
  • 1;Company; NULL;False; /company
  • 2; О нас;1;False; /company/aboutus
  • 3; Миссия; 1;False; /company /mission
  • 4; Команда; 2;False; /company/aboutus/team
  • 5; Клиент 2;10;False; /references/client2
  • 6; Клиент 1;10;False; /references/client1
  • 7; Клиент 4;10;True; /references/client4
  • 8; Клиент 5;10;True; /references/client5
  • 10;Ссылки; NULL;False; /ссылки

Комментарии:

1. Загляните в LINQ: OrderBy() и Where() . docs.microsoft.com/en-us/dotnet/csharp/programming-guide /…

Ответ №1:

Приведенное ниже должно помочь вам достичь этого. Я прокомментировал части, которые я добавил, чтобы помочь.

 list.OrderBy(x => x.MenuName) // Order alphabetically based on MenuName
    .Where(x => x.IsHidden != "True") // Filter only for non-hidden items
    .ToList().ForEach(
    x => Console.WriteLine($"{x.ID}t {x.MenuName}t {x.ParentID}t{x.IsHidden}t {x.LinkURL}"));
 

Комментарии:

1. Когда я пытаюсь это сделать, он говорит, что «оператор! невозможно применить к «string»»

2. Извините, не заметил, что это строка, я обновил код