极简LINQ方法- System.NullReferenceException

本文关键字:System NullReferenceException 方法 LINQ 极简 | 更新日期: 2023-09-27 18:15:50

我想知道是否有可能让这个工作:

product.PrimaryImage = db.ProductImages
    .Where(p => p.Product.ID == product.ID)
    .OrderBy(p => p.Order ?? 999999)
    .ThenBy(p => p.ID)
    .FirstOrDefault()
    .Name;
db.SaveChanges();

它一直工作,直到没有更多的图像用于该产品,此时它抛出…

System.NullReferenceException: Object reference not set to an instance of an object.

我做了一个修复,但我更愿意保持它尽可能小,留在Linq,所以我希望有一种方法让我的初始语句的功能。

丑陋的修复:

ProductImages primaryProductImage = db.ProductImages.Where(p => p.Product.ID == product.ID).OrderBy(p => p.Order ?? 999999).ThenBy(p => p.ID).FirstOrDefault();
string primaryImage = (primaryProductImage != null) ? primaryProductImage.Name : null;
product.PrimaryImage = primaryImage;
db.SaveChanges();

极简LINQ方法- System.NullReferenceException

试试这个:

product.PrimaryImage = db.ProductImages
    .Where(p => p.Product.ID == product.ID)
    .OrderBy(p => p.Order ?? 999999)
    .ThenBy(p => p.ID)
    .Select(p => p.Name)
    .FirstOrDefault();