拆分字符串并转换为可为空的 long

Posted

技术标签:

【中文标题】拆分字符串并转换为可为空的 long【英文标题】:Split string and convert to nullable long 【发布时间】:2019-07-30 09:29:41 【问题描述】:

我有以下代码拆分字符串,然后将值转换为长:

string.IsNullOrEmpty(baIds) ? null : baIds.Split(',').Select(e => long.Parse(e)).ToList(),

我想要的是将值转换为可为空的 long。 有什么帮助吗?

【问题讨论】:

这似乎是一个 XY 问题,为什么你首先需要可以为空的 long? 如果我的理解正确,您可以尝试返回null而不是返回default(long?) 可能重复(但带有 int)***.com/a/45037/5295849 How to parse a string into a nullable int的可能重复 (e => (long?)long.Parse(e)) ? 【参考方案1】:

如果您只需要将其输入为long?,则只需输入Select

Select(e => (long?)long.Parse(e))

如果您需要使用null 来表示无法解析的内容,那么

Select(e => long.TryParse(e, out long r) ? r : default(long?))

【讨论】:

【参考方案2】:

使用TryParse

List<long?> result = null;
if (!string.IsNullOrEmpty(baIds))

    long temp;
    result = baIds.Split(',').Select(e => long.TryParse(e, out temp) ? temp : (long?)null).ToList();

https://dotnetfiddle.net/uHk99J

【讨论】:

我会删除long temp; 行并改用out var temp。但我仍然不相信 OP 甚至需要这样做。【参考方案3】:

你可以用这个,

string.IsNullOrEmpty(baIds) ? null : baIds.Split(',').Select(e => (long?)long.Parse(e)).ToList(),

【讨论】:

以上是关于拆分字符串并转换为可为空的 long的主要内容,如果未能解决你的问题,请参考以下文章

Typescript 映射类型,其中仅保留可为空的属性并转换为字符串类型

ORA-12704: 执行可为空的 NVARCHAR 的多行 INSERT 时字符集不匹配

在 Typescript 中将可为空的对象值转换为字符串

在 PSQL 中为可为空的列添加唯一约束

为可为空的函数参数提供“null”时如何使用默认值?

退出构造函数时,不可为空的属性必须包含非空值。考虑将属性声明为可为空