Les meilleures pratiques de SingleOrDefault()

Je veux faire de mon mieux. Je peux réécrire le premier exemple à la seconde?

IQueryable<PDF> pdfList = (from pdfobj in pdfDataContext.PDFs
                           where pdfobj.Id == pdfId
                           select pdfobj);
if (pdfList.Count() > 0)
{
  PDF pdfOldWay = pdfList.FirstOrDefault();
  pdfOldWay. //do something. (pdfOldWay can't be null here...)
}

--

PDF pdfNewWay = (from pdfobj in pdfDataContext.PDFs 
                 where pdfobj.Id == pdfId 
                 select pdfobj).SingleOrDefault();
if (pdfNewWay != null)
{
  //do something
}

--

EDIT:

Désolé de ne pas être clair. Mon problème est d'obtenir l'objet PDF directement sans avoir à utiliser une liste de la première. Je ne veux pas faire un chèque pour le compteur est supérieur à 0 et parce qu'il n'a tout simplement pas l'air bon.

Il serait vraiment utile si vous pouviez format de votre code d'échantillons, de sorte qu'ils ne nécessitent pas de défilement - en particulier lorsque le défilement du contenu est essentiel. Je vais modifier ça maintenant, mais si vous pouviez le faire vous-même à l'avenir, il serait apprécié.
Désolé. Sûr que je vais le faire dans l'avenir.
Qu'entendez-vous par "sécurité", la deuxième peut lever une exception que la première ne serait pas. Ne sorte de coffre-fort pour dire la même fonctionnalité? ou n'implique quelque chose d'autre?
est-il vrai que l'appel à SingleOrDefault() ne peut pas jeter un NullPointException? Parce que je ne connais pas la réponse pour que je maded la première (piraté?) solution.
FirstOrDefault ou SingleOrDefault sont le mieux dans votre cas. Dans d'autres cas où vous vous attendez à plus d'un résultat de l'utilisation .() Au lieu de Count > 0. Le comptage est beaucoup plus cher que juste de voir si il n'y a rien là.

OriginalL'auteur radbyx | 2010-12-28