我完全不知道为什么这不是按照我希望它查询的方式查询,但我是编程的新手,但在我的脑海里似乎是正确的。
我正在使用 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
答案 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.