C# 8:Linq Select,将字符串解析为 Nullable Int
C# 8: Linq Select, Parse String into Nullable Int
我正在尝试使用 Linq select 将字符串解析为 Nullable int。以下最后一行在 Select 中不起作用。接收错误如下。如何修复?
资源:
var aviationInfo = _dbContext.Cpamlt
.Where(c=> c.Account == bppInfoRequestDto.AccountNumber)
.Select(cpamlt => new BppAviationInfoDto()
{
AccountNumberIdentityId = cpamlt.Cpamltid,
SerialNumber = cpamlt.Vinserno,
Manufacturer = cpamlt.Manmod,
MakeModel = cpamlt.Manmak,
YearManufactured = Int32.TryParse(cpamlt.Manyr, out tempVal) ? Int32.Parse(cpamlt.Manyr) : (int?)null,
Error: The name 'tempVal' does not exist in the current context
尽可能避免扩展方法
将 Net Core 3.1 与 C#8 结合使用
语法要求您定义变量(如果您之前没有定义的话)。所以使用
Int32.TryParse(cpamlt.Manyr, out int tempVal)
但是,您的代码可以缩短,因为 tempVal
将包含您想要的值,您无需再次解析 -
YearManufactured = Int32.TryParse(cpamlt.Manyr, out int tempVal) ? tempVal : (int?)null,
您可以创建一个新方法来包装此操作。
static int? NullableParse(string input)
{
int output = 0;
if (!int.TryParse(input, out output))
{
return null;
}
return output;
}
我正在尝试使用 Linq select 将字符串解析为 Nullable int。以下最后一行在 Select 中不起作用。接收错误如下。如何修复?
资源:
var aviationInfo = _dbContext.Cpamlt
.Where(c=> c.Account == bppInfoRequestDto.AccountNumber)
.Select(cpamlt => new BppAviationInfoDto()
{
AccountNumberIdentityId = cpamlt.Cpamltid,
SerialNumber = cpamlt.Vinserno,
Manufacturer = cpamlt.Manmod,
MakeModel = cpamlt.Manmak,
YearManufactured = Int32.TryParse(cpamlt.Manyr, out tempVal) ? Int32.Parse(cpamlt.Manyr) : (int?)null,
Error: The name 'tempVal' does not exist in the current context
尽可能避免扩展方法
将 Net Core 3.1 与 C#8 结合使用
语法要求您定义变量(如果您之前没有定义的话)。所以使用
Int32.TryParse(cpamlt.Manyr, out int tempVal)
但是,您的代码可以缩短,因为 tempVal
将包含您想要的值,您无需再次解析 -
YearManufactured = Int32.TryParse(cpamlt.Manyr, out int tempVal) ? tempVal : (int?)null,
您可以创建一个新方法来包装此操作。
static int? NullableParse(string input)
{
int output = 0;
if (!int.TryParse(input, out output))
{
return null;
}
return output;
}