Foreach循环在第10次迭代后返回null

时间:2018-03-19 02:01:23

标签: c# asp.net-mvc google-api asp.net-core-2.0 google-books

我使用了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

这很奇怪,因为调试器显示请求已成功执行,我得到了结果。

enter image description here

可能出现什么问题? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

其中一个属性值为null。例如:PageCount。当调试器暂停时,检查当前项是否包含您尝试分配/使用的每个属性的数据。

此外,InnerException可能包含失败的属性的名称。