我想知道是否有可能使这个工作:
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();
最佳答案
试试这个:
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();