C# 拆分字符串并转换为可为空的长字符串
我有以下代码,它拆分字符串,然后将值转换为long:C# 拆分字符串并转换为可为空的长字符串,c#,C#,我有以下代码,它拆分字符串,然后将值转换为long: string.IsNullOrEmpty(baIds) ? null : baIds.Split(',').Select(e => long.Parse(e)).ToList(), 我想要的是将这些值转换为可为null的long。 有什么帮助吗?请使用TryParse List<long?> result = null; if (!string.IsNullOrEmpty(baIds)) { long temp;
string.IsNullOrEmpty(baIds) ? null : baIds.Split(',').Select(e => long.Parse(e)).ToList(),
我想要的是将这些值转换为可为null的long。
有什么帮助吗?请使用
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();
}
列表结果=null;
如果(!string.IsNullOrEmpty(baIds))
{
长温;
结果=baIds.Split(',')。选择(e=>long.TryParse(e,out temp)?temp:(long?)null.ToList();
}
你可以用这个
string.IsNullOrEmpty(baIds) ? null : baIds.Split(',').Select(e => (long?)long.Parse(e)).ToList(),
如果您只需要将其键入为
long?
,则只需在中选择
Select(e => (long?)long.Parse(e))
如果您需要使用null
来指示无法解析的内容,那么
Select(e => long.TryParse(e, out long r) ? r : default(long?))
这似乎是一个XY问题,为什么您首先需要可为空的long?如果我理解正确,您可以不返回null
而尝试返回default(long?
可能重复的(e=>(long?)long.Parse(e))
,我会删除long temp代码>行,并改用out var temp
。但我仍然不相信OP需要这么做。