2011-11-25 16 views
5

Mi chiedo se è possibile ottenere questo lavoro: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(); 

Funziona fino a quando non ci sono più immagini per tale prodotto a quel punto getta ...

Ho fatto una correzione per questo, ma preferirei mantenerlo il più minimamente possibile e rimanere in Linq quindi speravo che ci fosse un modo per far funzionare la mia dichiarazione iniziale.

Il brutto correzione:

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

risposta

10

Prova questa:

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

funziona perfettamente. Grazie sempre così tanto. – Oppdal