遇到null失败

时间:2019-04-14 06:22:27

标签: c#

此代码是Shopify Sync实用程序的一部分。从来没有失败过,直到我们在CompareTo Shopify字段中遇到没有价值的产品,而不是我们拥有没有CompareTo价值的产品。

private Decimal? GetComparePrice(long? productId, long? variantId, List<Product> products)
{
    var product = products.Where(x => x.Id == productId).FirstOrDefault();
    var variantData = product.Variants.Where(x => x.Id == variantId).FirstOrDefault();

    return variantData != null ? variantData.CompareAtPrice : null;
}

如果null的值为CompareTo,如何使我的函数返回null

1 个答案:

答案 0 :(得分:3)

尝试在有可能成为null的属性上使用?. null-conditional operators

这里是方法的修改版本,当 product variant CompareAtPrice <时,返回null,而不引发异常/ em>是null

private decimal? GetComparePrice(long? productId, long? variantId, List<Product> products)
{
    var product = products.FirstOrDefault(p => p.Id == productId);
    var variant = product?.Variants?.FirstOrDefault(v => v.Id == variantId);
    return variant?.CompareAtPrice;
}

这里是link to run this example via .NET Fiddle