2010-06-22 13 views
4

J'entre dans LinqToSql et j'utilise le tutoriel NerdDinner. J'essaie de comprendre la syntaxe et je voudrais écrire de façon plus verbeuse ce qui se passe dans la première ligne, ce qui fonctionne. Question: Comment puis-je écrire la première requête quelque chose comme le code commenté (qui ne fonctionne pas).Linq - SingleOrDefault et NerdDinner

public Dinner GetDinner(int id){ 

     var result = db.Dinners.SingleOrDefault(d => d.DinnerID == id); 

     //var result = from d in db.Dinners.SingleOrDefault 
     //    where d.DinnerID == id 
     //   select d; 

     return (result); 
    } 

Vive

Dave

+2

Je pourrais aller à contre-courant ici, mais j'ai une forte préférence pour votre forme actuelle. Je trouve la forme déclarative difficile à utiliser quand j'utilise SQL si souvent (ils sont trop similaires mais aussi très différents), et tant de LINQ n'est pas couvert dans la forme déclarative qui finalement (comme vous creuser plus profond) il fait plus de sens pour aller avec des chaînes de méthode pour la cohérence. – spender

+0

@spender - Je préfère aussi la forme non-déclarative car je la trouve plus en phase avec la POO et plus facile à lire. – Omar

+0

Un grand merci à roufamatic, spender et Baddie (super nom!). Je vais regarder mes requêtes linq jusqu'ici et j'essaierai de viser les chaînes de méthodes. À votre santé! –

Répondre

3

Malheureusement il n'y a pas une version déclarative de SingleOrDefault que vous pouvez utiliser. Au lieu de cela, envelopper votre déclaration déclarative LINQ entre parenthèses comme suit:

var result = (
       from d in db.Dinners 
       where d.DinnerID == id 
       select d 
      ).SingleOrDefault(); 
Questions connexes