我有一个来自json反序列化器的ArrayList。这个数组应该只包含数字,但是和往常一样,坏事可能发生,我希望避免处理异常。这就是我所拥有的:
var TheListOfLongs = (from object s in TheArrayList
select Convert.ToInt64(s)).ToList<long>();
只要TheArrayList仅包含数字,此方法就可以正常工作。如何将
Convert.ToInt64
语句更改为TryParse
?谢谢。
最佳答案
long outValue;
//will work, but double conversion
var result = TheArrayList.Cast<object>()
.Where(m => Int64.TryParse(m.ToString(), out outValue))
.Select(m => Convert.ToInt64(m)).ToList();
//should avoid double Parse, but untested, see Daniel Hilgarth's answer and warnings.
var result = TheArrayList.Cast<object>()
.Where(m => Int64.TryParse(m.ToString(), out outValue))
.Select(m => outValue).ToList();
或良好的foreach,这可能是最佳选择。
var list = new List<long>();
long outValue;
foreach (object value in the ArayList) {
if (Int64.TryParse(value.ToString(), out outValue))
list.Add(outValue);
}
关于c# - linq从ArrayList解析整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14730214/