我又回到了另一个关于对象的问题。 请注意我只是一般的编程一个月,所以我很抱歉,如果这是一个愚蠢的问题。如何通过属性删除对象列表中的多个对象
现在我正在做一些家庭作业,让我设计一个图书馆课程和一本书课。这个图书馆应该存储一些书籍。我应该用一些方法来操作这个对象列表。大多数我知道如何设计的方法除外。我应该在某个作者的所有书籍中搜索此列表并删除它们。我不知道如何解决这个问题。我可以通过书类的属性从列表中删除单个对象,但我不知道如何删除它的多个对象。
class Library
{
public string Name { get; set; }
public List<Book> list = new List<Book>();
public List<Book> foundBooks = new List<Book>();
public Library(string name)
{
this.Name = name;
}
//Library Methods
public void AddBook(Book book)
{
list.Add(book);
}
public void PrintBookInfo(Book book)
{
Console.WriteLine("Title: "+ book.Title);
Console.WriteLine("Author " +book.Author);
Console.WriteLine("Publisher: "+ book.Publisher);
Console.WriteLine("Release Date: " + book.ReleaseDate.ToString());
Console.WriteLine("ISBN: " + book.ISBN);
Console.WriteLine();
}
public void PrintAllBooks()
{
foreach (Book book in list)
{
PrintBookInfo(book);
}
}
public Book SearchForBook(string name)
{
foreach (Book book in list)
{
if (book.Author == name)
{
PrintBookInfo(book);
return book;
}
}
return null;
}
public void DeleteBook(Book book)// this is the method im using to delete objects but I don't know how to extend this.
{
list.Remove(book);
}
}
这里是我的书类
class Book
{
//Properties
public string Title { get; set; }
public string Author { get; set; }
public string Publisher { get; set; }
public DateTime ReleaseDate { get; set; }
public int ISBN { get; set; }
public Book(string Title,
string Author,
string Publisher,
DateTime ReleaseDate,
int ISBN)
{
this.Title = Title;
this.Author = Author;
this.Publisher = Publisher;
this.ReleaseDate = ReleaseDate;
this.ISBN = ISBN;
}
}
最后我的主要到目前为止:我认为实现这个是创建的发现书籍数组,然后删除
class Program
{
static void Main(string[] args)
{
var library = new Library("Yishun Regional Library");
var bookOne = new Book("Harry Potter", "JK Rowling", "UK", DateTime.Today, 1165);
var bookTwo = new Book("Eragon", "Paolini", "Netherlands", DateTime.Today, 2565);
var bookThree = new Book("Harry", "JK Rowling", "UK", DateTime.Today, 1145);
library.AddBook(bookOne);
library.AddBook(bookTwo);
library.AddBook(bookThree);
Console.WriteLine("Hello Welcome To Yishun Library. Take a look at the books Availabe.");
Console.WriteLine();
foreach (Book book in library.list)
{
library.PrintBookInfo(book);
}
Console.WriteLine();
string name;
Console.WriteLine("Enter name of author: ");
name = Console.ReadLine();
var bookFound = library.SearchForBook(name);
library.DeleteBook(bookFound);
Console.WriteLine("Current list of books: \n");
library.PrintAllBooks();
}
的一种方式使用foreach方法的书籍,但我不知道如何实现这一点。或者说,我很快就发现你不能用foreach来操纵数据。任何帮助,将不胜感激谢谢! ]
从任何List <>对象中删除时,您必须从列表的末尾开始并移至开头。如果你有一个列表1,2,3,4,你删除'2',当你在列表中前进时,最终跳过'3'。所以我使用(int index = myList.Count -1; index> = 0; index--)。 – jdweng