[英]Linq to Sql in ASP.Net MVC 4 returns actual query string
我试图从我的AspNetUsers表中获取名字和姓氏字符串值,以获得特定记录(ID)。 当我使用Linq to Sql时,它将返回整个sql查询字符串。 这是我的代码:
var user = User.Identity.GetUserId();
var currentUser = from aspNetUser in db.AspNetUsers
where aspNetUser.Id == user
select aspNetUser.FirstName + " " + aspNetUser.LastName;
我正在尝试使用当前用户的名字和姓氏在视图中填充用户文本框。 我已将其作为列添加到AspNetUsers表中。 为什么它返回这个丑陋的查询,而不返回某人的名字和姓氏?
它返回这个:
SELECT CASE WHEN ([Extent1].[FirstName] IS NULL) THEN N'' ELSE [Extent1].[FirstName] END + N' ' + CASE WHEN ([Extent1].[LastName] IS NULL) THEN N'' ELSE [Extent1].[LastName] END AS [C1] FROM [dbo].[AspNetUsers] AS [Extent1] WHERE [Extent1].[Id] = @p__linq__0
不太确定如何返回SQL查询,但是您需要从查询中返回一条记录。 使用First / FirstOrDefault,例如:
var currentUser = (from aspNetUser in db.AspNetUsers
where aspNetUser.Id == user
select aspNetUser.FirstName + " " + aspNetUser.LastName)
.FirstOrDefault();
FirstOrDefault
将返回从结果返回的第一条记录。 如果没有记录,那么您将获得null
。
您还可以使用Single
\\ SingleOrDefault
,因为您要查询ID
并且始终应该返回一条记录。 但是,如果有多个符合您条件的记录,它们都可能引发异常。 根据您的要求使用它们中的任何一个。
您可以使用FirstOrDefault()
根据特定条件获取单个记录:
var currentUser = db.AspNetUsers.FirstOrDefault(x=>x.Id == user);
var Name = currentUser.FirstName + " " + currentUser.LastName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.