C# Linq-检索字符串中的单个值

C# Linq-检索字符串中的单个值,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我使用Asp.NET3.5和EF4 我需要在数据库中找到一个特定的行,并在标签上显示一个字符串值 在我使用这段代码时,它正在工作,所以我找到一个对象并读取它的属性 var myAuthor = (from at in context.CmsAuthors where at.AuthorId == myRow.AuthorId select at).Single(); myAuthorNameLabel.Text = myAuthor.

我使用Asp.NET3.5和EF4

我需要在数据库中找到一个特定的行,并在标签上显示一个字符串值

在我使用这段代码时,它正在工作,所以我找到一个对象并读取它的属性

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

  • 如果Linq中有其他语法可以实现相同的结果
  • 如何使用Lamba来实现这一点
  • 你建议我采用哪种方法
您可以使用:

 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();
下面是方法语法(使用lambdas)


谢谢,您能告诉我为什么您的第二个选项会更好吗?当然,使用
Single
执行实际的数据库查询,因此在第一种情况下,查询检索整个Author对象,然后从中选择姓氏。第二个方法执行一个最小的db查询,只检索姓氏列?甚至可以进行最小的数据库查询?谢谢你在这方面的帮助在这种情况下,我不认为它可以得到任何最低限度的。如果您需要检索两个值,那么选择匿名类型将获得最小查询。谢谢,我可以问您是否可以在这里写下一个匿名类型的示例吗?不幸的是,我正在努力,但没有成功。再次感谢!
myAuthorNameLabel.Text = context.CmsAuthors
                           .Where(at => at.AuthorId == myRow.AuthorId)
                           .Select(at => at.LastName) 
                           .SingleOrDefault() ?? string.Empty;