首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FirstOrDefault抛出ArgumentnullException

FirstOrDefault抛出ArgumentnullException
EN

Stack Overflow用户
提问于 2020-12-08 16:28:54
回答 1查看 146关注 0票数 0

我的目标是提取具有我指定的参数值的特定记录。数据来自外部API。

我的查询如下:

代码语言:javascript
复制
var productId = productsResponse.Where(x => x.Parameters.Any(y => y.Values.Any(z => z.Equals(auctionTitle)))).FirstOrDefault();

它可以正常工作直到过滤掉所有的记录。然后,该方法将中止并无法继续调试。

问题是:

System.ArgumentNullException:值不能为空

因为传输到FirstOrDefault的源为null。

我也试过:

代码语言:javascript
复制
var productId = productsResponse.Where(x => x.Parameters.Any(y => y.Values.Any(z => z.Equals(auctionTitle)))).DefaultIfEmpty().First();

请让我知道我应该读什么主题,因为我的想法已经用完了。我真的很想知道我错在哪里。

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 17:00:53

这可能不是一个答案,但是尝试一下这个结构:

代码语言:javascript
复制
var productId = productsResponse
   .Where(x => x.Parameters.SelectMany(y => y.Values)
      .Any(z => z == auctionTitle))
   .FirstOrDefault();

另外,如果数据来自外部API,则可能需要更多的空检查。

代码语言:javascript
复制
var productId = productsResponse
   .Where(x => x.Parameters?.SelectMany(y => y.Values ?? Enumerable.Empty<Value>())
      ?.Any(z => z == auctionTitle) == true)
   .FirstOrDefault();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65202906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档