我的目标是提取具有我指定的参数值的特定记录。数据来自外部API。
我的查询如下:
var productId = productsResponse.Where(x => x.Parameters.Any(y => y.Values.Any(z => z.Equals(auctionTitle)))).FirstOrDefault();它可以正常工作直到过滤掉所有的记录。然后,该方法将中止并无法继续调试。
问题是:
System.ArgumentNullException:值不能为空
因为传输到FirstOrDefault的源为null。
我也试过:
var productId = productsResponse.Where(x => x.Parameters.Any(y => y.Values.Any(z => z.Equals(auctionTitle)))).DefaultIfEmpty().First();请让我知道我应该读什么主题,因为我的想法已经用完了。我真的很想知道我错在哪里。
发布于 2020-12-08 17:00:53
这可能不是一个答案,但是尝试一下这个结构:
var productId = productsResponse
.Where(x => x.Parameters.SelectMany(y => y.Values)
.Any(z => z == auctionTitle))
.FirstOrDefault();另外,如果数据来自外部API,则可能需要更多的空检查。
var productId = productsResponse
.Where(x => x.Parameters?.SelectMany(y => y.Values ?? Enumerable.Empty<Value>())
?.Any(z => z == auctionTitle) == true)
.FirstOrDefault();https://stackoverflow.com/questions/65202906
复制相似问题