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()
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()
これが私のピッチです:
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行のコードで、あなたのような質問に答えることができます。
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();
これを試して:
listofIDs.Select(id => string.IsNullOrEmpty(id)? 0 : int.Parse(id)).ToList();
var intList = stringList.Select(s => (String.IsNullOrEmpty(s))? 0 : Convert.ToInt32(s)).ToList()