2011-11-25 15 views
5

bu çalışma almak mümkün olup olmadığını merak ediyorum:Minimalist LINQ yaklaşımı - System.NullReferenceException

o atar bu noktada söz konusu ürün için başka görüntü kalmayıncaya kadar Çalışıyor
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. 

Bunun için bir çözüm yaptım ama mümkün olduğunca minimal tutmayı ve Linq'de kalmayı tercih ederim, bu yüzden ilk ifademin çalışmaya başlamasının bir yolu olduğunu umuyorum.

çirkin düzeltme:

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(); 

cevap

10

bu deneyin: mükemmel

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(); 
+0

eserler. Çok teşekkür ederim dtb. – Oppdal