private void AddReading(Character character, ConsideredActions alreadyConsidered, IEnumerable<IBook> topicalBooks, double remainingTotal, double desire) { if (topicalBooks.Any()) { var bestBook = (from book in topicalBooks orderby character.GetBookLevelGain(book), book.Level ascending select new EvaluatedBook { Book = book, PerceivedValue = character.GetBookLevelGain(book) * desire / remainingTotal }).First(); // check to see if reading this book is already in the action list Reading readingAction = new Reading(bestBook.Book, bestBook.PerceivedValue); alreadyConsidered.Add(readingAction); } }