Linq - получить одно значение в строке - PullRequest
0 голосов
/ 07 июня 2011

Я использую Asp.net 3.5 и EF 4.

Мне нужно найти конкретную строку в моей базе данных и отобразить на метке одно значение в виде строки.

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

 var myAuthor = (from at in context.CmsAuthors
             where at.AuthorId == myRow.AuthorId
             select at).Single();   
 myAuthorNameLabel.Text = myAuthor.LastName;

Я хотел бы знать:

  • Если в Linq есть другой синтаксис длядостичь того же результата.
  • Как это сделать с помощью Lamba?
  • Какой подход вы мне предложите?

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Вот синтаксис метода (с использованием лямбды)

myAuthorNameLabel.Text = context.CmsAuthors
                           .Where(at => at.AuthorId == myRow.AuthorId)
                           .Select(at => at.LastName) 
                           .SingleOrDefault() ?? string.Empty;
3 голосов
/ 07 июня 2011

Вы можете использовать:

 var myAuthorName = 
(from at in context.CmsAuthors where at.AuthorId == myRow.AuthorId select at).Single().Select(a => a.LastName);

на самом деле это было бы еще лучше:

var myAuthorName = 
(from at in context.CmsAuthors where at.AuthorId == myRow.AuthorId select at).Select(a => a.LastName).Single();

Обновление

Пример использования с анонимным типом:

var myAuthorNames = 
    (from at in context.CmsAuthors where at.AuthorId == myRow.AuthorId select at).Select( a => new {a.LastName, a.FirstName}).Single();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...