2010-06-22 2 views
4

Я получаю LinqToSql и использую учебник NerdDinner.Linq - SingleOrDefault и 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); 
    } 

Приветствия

Dave

+2

Я мог бы пойти против зерна здесь, но у меня есть сильное предпочтение для вашей текущей формы. Я считаю, что декларативную форму трудно переключать, когда я часто использую SQL (они слишком похожи, но также очень разные), и поэтому большая часть LINQ не рассматривается в декларативной форме, которая в конечном итоге (поскольку вы копаете глубже) делает больше смысла идти с цепочками методов для согласованности. – spender

+0

@spender - Я тоже предпочитаю не декларативную форму, поскольку я нахожу ее более подходящей для OOP и ее легче читать. – Omar

+0

Большое спасибо roufamatic, spender и Baddie (отличное имя!). Я посмотрю на мои запросы linq до сих пор и попытаюсь прицелиться в цепочки методов. Ура! –

ответ

3

К сожалению, не декларативный версия SingleOrDefault, которые вы можете использовать. Вместо этого оберните декларативный оператор LINQ в круглых скобках следующим образом:

var result = (
       from d in db.Dinners 
       where d.DinnerID == id 
       select d 
      ).SingleOrDefault(); 
Смежные вопросы