Linq Query不从数据库字段返回值

时间:2014-01-31 16:44:45

标签: c# linq

我完全不知道为什么这不是按照我希望它查询的方式查询,但我是编程的新手,但在我的脑海里似乎是正确的。

我正在使用 this.Context.User.Identity.Name 来返回已登录的用户,但它会返回一封电子邮件,而不是用户名。这是上下文中的脚本。

@Html.ActionLink("My Account", "Users", new { id = this.Context.User.Identity.Name  },     false) @: | @Html.ActionLink("Logout", "Logout", "Users") 

从此我希望网址看起来像网站/用户/用户名,因此想要获取用户名而不是电子邮件。

查询:

Project1.Models.DBContext db = new Project1.Models.DBContext();
//save u.Username in var user where u.Email == user_logged_in_email

var user = from u in db.Users
           where u.Email == this.Context.User.Identity.Name
           select u.Username;

我希望linq查询会找到包含电子邮件地址的行,然后将用户名拉出并将其存储在var用户中。它真正相同的是System.Data.Entity.Infrastructure.DbQuery

1 个答案:

答案 0 :(得分:1)

您需要枚举该查询以获取用户:

var user = (from u in db.Users
           where u.Email == this.Context.User.Identity.Name
           select u.Username).SingleOrDefault();
//SingleOrDefault will return null if no user is found, so you need to check for that before operating upon the user object.