极简主义LINQ方法 - System.NullReferenceException

Opp*_*dal 5 c# linq

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

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

它可以工作,直到该产品没有更多的图像,它会抛出...

System.NullReferenceException: Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

我为它做了一个修复,但我宁愿尽量保持它并留在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();
Run Code Online (Sandbox Code Playgroud)

dtb*_*dtb 10

试试这个:

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();
Run Code Online (Sandbox Code Playgroud)