我使用Asp.net 3.5和EF 4。
我需要在数据库中找到一个特定的行,并在标签上显示一个字符串形式的值。
在我使用这段代码的时候,它正在工作,所以我找到一个Object并读取它的属性。
var myAuthor = (from at in context.CmsAuthors
where at.AuthorId == myRow.AuthorId
select at).Single();
myAuthorNameLabel.Text = myAuthor.LastName;
我想知道:
- 如果在Linq中还有其他语法可以达到相同的结果
- 如何使用Lamba
- 你建议我采取哪种方法
以下是方法语法(使用lambdas)
myAuthorNameLabel.Text = context.CmsAuthors
.Where(at => at.AuthorId == myRow.AuthorId)
.Select(at => at.LastName)
.SingleOrDefault() ?? string.Empty;
您可以使用:
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();