繁体   English   中英

Linq to ASP.Net MVC 4中的Sql返回实际的查询字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM