2016-11-29 1 views
0

내가 가지고 문자열의 목록을 반환하는 함수 : 경우, 여러 문자열이 목록에있는 경우변환 문자열 목록 경우에만 항목이 존재

string displayText; 
List<string> list = new List<string>(); 
list = GetListOfStrings(); 
if(list.Count > 1) 
{ 
    displayText = string.Join("\r", list.ToArray()); 
} 
else 
{ 
    displayText = list.ToString(); 
} 

그때 표시 목적으로 \ r에 의해 구분을 그 중 한 개만 문자열로 변환 할 수 없습니다.

위의 내용은 하나의 문자열 만있는 경우 "System.Collections.Generic.List1 [System.String]"을 보여줍니다.

목록에 문자열이 하나 뿐인 경우 가장 좋은 방법은 무엇입니까?

+5

그냥'string.Join ("\ r에", 목록)을 사용하여 '목록에 하나의 항목 만 – Alberto

+3

'var에 해당 DisplayText = string.Join ("\ r에 포함되어있는 경우이 사건을 처리합니다 ", GetListOfStrings());'- 11 줄을 1 개 이하로,보다 효율적으로 –

+0

ToString() 메서드는 List 에 대해 재정의되지 않으므로'list.ToString()'을 사용하면 object.ToString() 구현체를 얻을 수 있습니다. 볼 수 있듯이 형식의 전체 이름을 반환합니다. – user1681317

답변

2

목록에 ToString를 사용하는 이유 - 단지 최초로 유일한 항목을 잡아 : 코멘트에

displayText = list[0]; 

모두 답변뿐만 아니라 올바른 것을 ToString 불구하고 string에 조금 중복 . 나는 "if를 제거하십시오"가 실제로 가장 좋은 대답이라고 생각합니다. 목록

if(list.Count > 1) 
{ 
    displayText = string.Join("\r", list.ToArray()); 
} 
else 
{ 
    displayText = list.SingleOrDefault(); 
} 
0

사용 SingleOrDefault() 한 항목이 있습니다. 당신은 사용할 수 있습니다

string displayText; 
List<string> list = new List<string>(); 
list = GetListOfStrings(); 
displayText = string.Join("\r", list); 
+0

SingleOrDefault가 나에게 사용 가능한 것으로 표시되지 않습니다. –

+1

네임 스페이스 추가 System.Linq –

+0

확실히 'FirstOrDefault'를 의미하지 않습니까? –

0

하나 개 이상의 항목을 의미하지 않는다 있지 않는 유일한 항목을 가져 오는

+2

('displayText'를 지정할 필요가 있고'new List ()'이 필요없고'ToArray()'가 필요 없습니다) –

관련 문제