Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Core 2.1在视图中使用HttpContext_C#_Asp.net_Linq_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# ASP.NET Core 2.1在视图中使用HttpContext

C# ASP.NET Core 2.1在视图中使用HttpContext,c#,asp.net,linq,asp.net-core,asp.net-core-mvc,C#,Asp.net,Linq,Asp.net Core,Asp.net Core Mvc,我有这个httpcontext声明,我想在视图中使用它来显示当前用户的用户名。到目前为止,我是这样做的: <p>@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")</p> 但它不允许我在SingleOrDefault之后使用Select。返回与条件匹配的单个元素,而不是另一个IQueryable或IEnumerable集合,后者可以在以后进行Select-ed 返回序列的单个特定元素或默认

我有这个httpcontext声明,我想在视图中使用它来显示当前用户的用户名。到目前为止,我是这样做的:

<p>@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")</p>
但它不允许我在SingleOrDefault之后使用Select。

返回与条件匹配的单个元素,而不是另一个
IQueryable
IEnumerable
集合,后者可以在以后进行
Select
-ed

返回序列的单个特定元素或默认值 如果找不到该元素

在使用之前,应使用返回集合:

对于C#6.0及更高版本,请使用null条件运算符获取其值:

@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")?.Value
然而,结果是这样的:

因为
.SingleOrDefault
返回一个索赔项目,因此视图使用其
.ToString
方法呈现该项目

但它不允许我在SingleOrDefault之后使用Select

.SingleOrDefault
返回集合中的项目,而
.Select
需要一个集合。您应该直接访问此项的
.Value
属性

@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")?.Value

是否应该是
@Context.User.Claims.Where(u=>u.Type==“UserName”)。选择(c=>c.Value)。SingleOrDefault()
@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")?.Value
@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")?.Value