2011-11-25 13 views
5

मैं सोच रहा हूँ अगर यह इस काम कर प्राप्त करना संभव है:Minimalist LINQ दृष्टिकोण - System.NullReferenceException

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. 

मैंने इसके लिए एक फिक्स किया लेकिन मैं जितना संभव हो सके इसे न्यूनतम रखना चाहता हूं और लिंक में रहना चाहता हूं, इसलिए उम्मीद थी कि मेरा प्रारंभिक बयान कार्य करने का एक तरीका था।

बदसूरत ठीक:

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

उत्तर

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

निर्माण पूरी तरह से। धन्यवाद-बहुत अधिक डीटीबी। – Oppdal

संबंधित मुद्दे