下面的代碼工作正常,但我想使用yield或通過更改算法來優化代碼。使用良率或更改算法優化代碼
public IEnumerable<Book> GetAuthorWithBookName(string keyword)
{
var bookAndAuthorList = new List<Book>();
List<Author> AuthorNameList = getAuthorName(keyword);
foreach (var author in AuthorNameList)
{
XmlNode booksNames = getBook(author);
XDocument XDOCbooksNames = XDocument.Parse(booksNames.OuterXml);
var bookNameList = (
from x1 in XDOCbooksNames.Descendants("Books")
select x1.Elements("book").Select(g => g.Attribute("name").Value))
.ToList();
foreach (var bookName in bookNameList)
{
bookAndAuthorList.Add(new Book()
{
authorName = author.authorName,
bookName = bookName
});
}
}
return bookAndAuthorList;
}
public class Book
{
public string authorName { get; set; }
public string bookName { get; set; }
}
使用'yield'不會給你一個真正的好處,因爲無論如何你會在每次迭代中創建一個新的'Book'對象。 – 2009-12-29 23:24:22
@Aviad,如果在循環中存在一個退出條件,可以提供幫助,其中Book實例被消耗 – 2009-12-29 23:29:53
爲什麼優化?爲什麼? – LukeH 2009-12-29 23:32:37