VB中的谓词函数

问题描述 投票:0回答:1

我在C#中有一个谓词我试图翻译成VB.net:

user.first_name = claimsIdentity.Claims.First(c => c.Type == System.IdentityModel.Claims.ClaimTypes.GivenName).Value;

至:

user.first_name = claimsIdentity.Claims.First(Function(claim) claim.Type = ClaimTypes.GivenName).Value

我收到以下错误:

System.InvalidOperationException:'Sequence不包含匹配的元素'

有没有人对如何使这个工作有任何建议?

.net vb.net
1个回答
0
投票

使用FirstOrDefault代替和Null-conditional运算符:

user.first_name = claimsIdentity.Claims
  .FirstOrDefault(c => c.Type == System.IdentityModel.Claims.ClaimTypes.GivenName)?.Value;

如果序列不包含任何元素,它将返回默认值。

© www.soinside.com 2019 - 2024. All rights reserved.