拆分字符串并转换为可为空的 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 映射类型,其中仅保留可为空的属性并转换为字符串类型