[C#] 쉼표로 구분 된 문자열을 List <int>로 변환하는 방법

string tags = "9,3,12,43,2"

List<int> TagIds = tags.Split(',');

split 메소드가 문자열을 반환하는 원인이 작동하지 않습니다.



답변

이를 수행하는 한 가지 방법이 있습니다.

List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();


답변

간단한 유효성 검사를 포함하고 예외를 throw하는 대신 유효하지 않은 값을 건너 뛰려면 TryParse를 사용하는 것이 있습니다.

string csv = "1,2,3,4,a,5";
int mos = 0;
var intList = csv.Split(',')
                    .Select(m => { int.TryParse(m, out mos); return mos; })
                    .Where(m => m != 0)
                    .ToList();

//returns a list with integers: 1, 2, 3, 4, 5

편집 : 다음은 Antoine의 피드백을 기반으로 업데이트 된 쿼리입니다. 먼저 TryParse를 호출하여 잘못된 값을 필터링 한 다음 구문 분석하여 실제 변환을 수행합니다.

string csv = "1,2,3,4,a,5,0,3,r,5";
int mos = 0;
var intList = csv.Split(',')
                    .Where(m => int.TryParse(m, out mos))
                    .Select(m => int.Parse(m))
                    .ToList();

//returns a list with integers: 1, 2, 3, 4, 5, 0, 3, 5

편집 2 : Charles Burns의 피드백 덕분에 C # 7.0에 대한 업데이트 된 쿼리입니다. 이 접근법으로 여분의 mos 변수를 제거하므로 조금 더 깔끔합니다.

string csv = "1,2,3,4,a,5,0,3,r,5";
var intList = csv.Split(',')
                 .Where(m => int.TryParse(m, out _))
                 .Select(m => int.Parse(m))
                 .ToList();


답변

W / 당신은 LINQ를 사용할 수 있습니다 int.Parse()을 변환 string[]IEnumerable<int>다음에 그 결과를 전달합니다 List<T>생성자를 :

var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));


답변

약간의 LINQ는 먼 길을갑니다.

 List<int> TagIds = tags.Split(',')
         .Select(t => int.Parse(t))
         .ToList();


답변

LINQ Query가 없으면이 방법을 선택할 수 있습니다.

string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();

그런 다음이 목록을 정수 유형으로 변환 할 수 있습니다 …


답변

string tags = "9,3,12,43,2"

List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();


답변

C # 3.5를 사용하는 경우 Linq를 사용하여이를 달성 할 수 있습니다.

string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(s=>int.Parse(s)).ToList();

또는 짧은 것

string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(int.Parse).ToList();