我有一个返回字符串列表列表的方法。它遍历一些对象以填充字符串列表。有一些错误,因为它只是重复存储第一个对象。这是一项任务。任何建议都非常感谢
public List<List<string>> BookDetails()
{
List<List<string>> listOfBooks = new List<List<string>>();
List<string> bookDetails = new List<string>();
List<Book> b;
foreach (Library lib in libraryList)
{
b = lib.Booklist;
foreach (Book book in b)
{
bookDetails.Add(book.BookTitle);
bookDetails.Add(book.BookAuthor);
bookDetails.Add(lib.LibraryName);
bookDetails.Add(book.BookGenre);
listOfBooks.Add(bookDetails);
}
}
return listOfBooks;
}
答案 0 :(得分:2)
每次将书籍添加到listOfBooks时,您都需要一本新的书籍详细信息对象。
将书籍详细信息对象的创建移动到最里面的循环中,如下所示:
foreach (Book book in b)
{
List<string> bookDetails = new List<string>(); //<-- move this line
bookDetails.Add(book.BookTitle);
bookDetails.Add(book.BookAuthor);
bookDetails.Add(lib.LibraryName);
bookDetails.Add(book.BookGenre);
listOfBooks.Add(bookDetails);
}
顺便说一句,我不得不想知道为什么要将单个属性作为字符串添加到listOfBooks而不是像List<Pair<String,Book>>
那样,甚至可能List<Pair<Library,Book>>
。