У меня есть текстовый файл с информацией о различных книгах (имя, издатель, автор, год и т. Д.), И мне нужна программа для распечатки названий книг, опубликованных только определенными издателями (в моем случае "O")Рейли ").
Я пытался использовать File.ReadAllLines или где name.Contains (" O'Reilly "), но всегда получаю ошибку.Извините, если я делаю что-то глупое, просто начинаю с C #
static void Task1()
{
List<Book> namings = Book.GetBooks("books.txt");
var resul = from name in namings
where name.Contains("O'Reilly")
select name;
namings.ToList().ForEach(x => x == "O'Reilly" Console.WriteLine($" '{x.Name}' by {x.Publisher}"));
}
public class Book
{
public string Name;
public string Publisher;
public string Author;
public int Year;
public int Edition;
public string ISBN;
public string List => $"Name: {Name}\nPublisher: {Publisher}\nAuthor: {Author}\nYear: {Year}\nEdition: {Edition}\nISBN: {ISBN}\n";
public static List<Book> GetBooks(string filename)
{
List<Book> result = new List<Book>();
string[] lines = File.ReadAllLines(filename);
foreach (string line in lines)
{
try
{
string[] fields = line.Split(';');
Book b = new Book()
{
Name = fields[0],
Publisher = fields[1],
ISBN = fields[2],
Author = fields[3],
Edition = int.Parse(fields[4]),
Year = int.Parse(fields[5]),
};
result.Add(b);
}
catch (Exception e)
{
Console.WriteLine($"An exception occured while reading the following line:{line}\nException:{e.Message}");
}
}
return result;
}
public static void WriteBooks(string filename, List<Book> books)
{
List<string> lines = new List<string>();
foreach (Book book in books)
{
lines.Add($"{book.Name};{book.Publisher};{book.ISBN};{book.Author};{book.Year};{book.Edition}");
}
File.WriteAllLines(filename, lines);
}
}
Вот текстовый файл:
Язык программирования C ++; Addison-Wesley; 978-0321563842; Бьярн Страуструп; 4; 2013
Java в двух словах; O'Reilly; 978-1449370824; Бенджамин Дж. Эванс и Дэвид Фланаган; 6; 2015
C # в глубине; Мэннинг; 978-1617294532; Джон Скит; 4; 2018
Разработка веб-API; O'Reilly; 978-1492026921; Бренда Джин, Саураб Сахни и Амир Шеват; 1; 2018
Я ожидаю, что программа выведет:
Издатель О'Рейли: Java в двух словах;Разработка веб-API;