如何List<string> to List<int>
在 C# 中使用 LINQ 将要转换为 0 的空字符串或空字符串转换为 0
以下 LINQ 语句将转换为List<sting>
,List<int>
但这些语句是否适用于上述场景
listofIDs.Select(int.Parse).ToList()
var intList = stringList.Select(s => Convert.ToInt32(s)).ToList()
如何List<string> to List<int>
在 C# 中使用 LINQ 将要转换为 0 的空字符串或空字符串转换为 0
以下 LINQ 语句将转换为List<sting>
,List<int>
但这些语句是否适用于上述场景
listofIDs.Select(int.Parse).ToList()
var intList = stringList.Select(s => Convert.ToInt32(s)).ToList()
这是我的音调:
var stringlist = new List<String> { "1", "2", "", null };
var intList = stringlist.Select(s => { int i; return int.TryParse(s, out i) ? i : 0; }).ToList();
Debug.Print("{0},{1},{2},{3}", intList[0], intList[1], intList[2], intList[3]);
测试输出:1,2,0,0
与 IsNullOrWhiteSpace 建议没有什么不同。但是,它比只使用 int.Parse unguarded 更安全,如果输入无效,它将引发异常。
给你一个建议:TDD!熟悉众多 .NET 测试框架之一。你可以用另外 2-3 行代码来回答像你这样的问题。
stringList.Select(s => string.IsNullOrEmpty(s) ? 0 : int.Parse(s)).ToList();
或者,如果您使用的是 .Net 框架 4.0 或更高版本,您可以尝试使用string.IsNullOrWhiteSpace
stringList.Select(s => string.IsNullOrWhiteSpace(s) ? 0 : int.Parse(s)).ToList();
例如:
List<string> stringList = new List<string> { "1", "2", "3", " ", "", "4" };
List<int> newListOfInt = stringList.Select(s => string.IsNullOrWhiteSpace(s) ?
0 : int.Parse(s)
).ToList();
尝试这个:
listofIDs.Select(id => string.IsNullOrEmpty(id)? 0 : int.Parse(id)).ToList();
var intList = stringList.Select(s => (String.IsNullOrEmpty(s))? 0 : Convert.ToInt32(s)).ToList()