0

List<string> to List<int>C#でLINQを使用して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テストフレームワークの1つに精通してください。別の2〜3行のコードで、あなたのような質問に答えることができます。

于 2012-10-25T09:33:23.683 に答える
1
stringList.Select(s => string.IsNullOrEmpty(s) ? 0 : int.Parse(s)).ToList();

または、.Net Framework 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 に答える