2017-03-16 1 views
2

문자열 배열 목록을 int 배열 목록에 캐스팅하려고합니다.목록 <String[]>을 목록으로 변환하는 방법 <int[]>?

List<int[]> dataset = Read(fileName, separator).Select(
    line => Array.ConvertAll(line, s => int.Parse(s) 
); 

읽기 문자열 배열의 목록을 반환 : List<String[]> dataset

+3

할 수 있습니다하지 **를 int로 캐스트 ** 문자열을 수행 할 수 있습니다 ** 변환 (구문 분석) **를. –

+1

간단한 루프를 이해하고 디버그하기가 더 쉬울 수도 있습니다. – Vland

+0

그게 무슨 뜻인지, 미안 해요. – Aevitus

답변

3

을 당신은 목록 (IEnumerable<int[]> 인) .Select() 결과를 변환 .ToList<T>()을 사용할 수 있습니다 나는 다음과 같은 노력했다.
이렇게하면 항목 배열의 모든 항목에 int.Parse을 적용하고 결과를 List로 변환합니다.
는 또한, 코드 동질성을 제공하기 위해, 당신은 Array.ConvertAll 대신 LINQ SelectToArray를 사용할 수 있습니다

List<string[]> stringArrayList = ...; 
List<int[]> intArrayList = stringArrayList 
    .Select(stringArray => stringArray.Select(int.Parse).ToArray()) 
    .ToList(); 

하나의 작은 수정을 : 당신은 int로 문자열을 캐스팅하지 않습니다, 당신은 변환/을 구문 분석 그것.

+0

고마워, 내가 뭘하려고 했어! – Aevitus

+0

@TimSchmelter 당신이 무슨 뜻인지 이해하지 못했습니다 :) 왜 그것이 유효하지 않습니까? 누가 그것을 사용합니까? –

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

List<int[]> Listintegers = yourList 
    .Select(y => y.Select(x => int.Parse(x)).ToArray()) 
    .ToList(); 
0
List<string[]> source = new List<string[]> 
{ 
    new string[2] { "2", "3" }, 
    new string[4] { "4", "5", "6", "7" }, 
    new string[1] { "1" } 
}; 

List<int[]> result = source.Select(array => Array.ConvertAll(array, item => int.Parse(item))).ToList(); 
관련 문제