我使用了Google Books Api through .NET。我检索了一个IEnumerable数据,通过一个简单的foreach循环迭代,我将每本书分配给一个列表中的书籍对象。 这是我从here定制的代码。
public IEnumerable<Book> GetBooks(string query, int offset, int count)
{
var queryList = _booksService.Volumes.List(query);
queryList.MaxResults = count;
queryList.StartIndex = offset;
var result = queryList.Execute();
if (result != null) {
var books = result.Items.Select(b => new Book
{
// id = b.Id,
title = b.VolumeInfo.Title,
subtitle = b.VolumeInfo.Subtitle,
authors = string.Join(",",b.VolumeInfo.Authors),
publisher = b.VolumeInfo.Publisher,
publishedDate = b.VolumeInfo.PublishedDate,
description = b.VolumeInfo.Description,
pageCount = (int)b.VolumeInfo.PageCount,
category = string.Join(",",b.VolumeInfo.Categories),
maturityRating = b.VolumeInfo.MaturityRating,
language = b.VolumeInfo.Language,
smallThumbnail = b.VolumeInfo.ImageLinks.SmallThumbnail,
thumbnail = b.VolumeInfo.ImageLinks.Thumbnail
}).ToList();
return books;
}
else
{
return null;
}
}
以前工作正常,但是现在,在第10次迭代之后,我得到了一个&#34; InvalidOperationException:Nullable对象必须有一个值。&#34;在我看来, 在以下行中:
var books = result.Items.Select(b => new Book
这很奇怪,因为调试器显示请求已成功执行,我得到了结果。
可能出现什么问题? 提前谢谢。
答案 0 :(得分:1)
其中一个属性值为null
。例如:PageCount。当调试器暂停时,检查当前项是否包含您尝试分配/使用的每个属性的数据。
此外,InnerException可能包含失败的属性的名称。