0

如何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()
4

4 回答 4

2

这是我的音调:

        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 行代码来回答像你这样的问题。

于 2012-10-25T09:33:23.683 回答
1
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();
于 2012-10-25T09:24:54.483 回答
0

尝试这个:

listofIDs.Select(id => string.IsNullOrEmpty(id)? 0 : int.Parse(id)).ToList();
于 2012-10-25T09:24:15.787 回答
0
var intList = stringList.Select(s => (String.IsNullOrEmpty(s))? 0 : Convert.ToInt32(s)).ToList()
于 2012-10-25T09:24:50.897 回答