2016-11-29 6 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で区切ります私はそれを文字列に変換することはできません。

ただし、上の図は、文字列が1つのみの場合、"System.Collections.Generic.List1 [System.String]"を示しています。

リストに文字列が1つしかない場合にこれを行う最良の方法は何ですか?

+5

ジャスト 'string.Join( "\ rを"、リスト)を使用し、'リストは一つだけのアイテム – Alberto

+3

'VARのdisplayText = string.Join(" \ rを含んでいる場合には、ケースを処理します"、GetListOfStrings());' - 11行を1に減らし、より効率的に使用する –

+0

ListではToString()メソッドがオーバーライドされないため、 'list.ToString()'を使用するとobject.ToString表示されるように、型のフルネームを返します。 – user1681317

答えて

2

リストにToStringを使用する理由 - ちょうど最初の(そして唯一の)項目つかむ:コメント欄で

displayText = list[0]; 

どちらの答えも同様に正しいように見えるが、ToStringもののstringには少し冗長です。私は "ifを削除する"が実際には最高の答えだと思います。リスト内の唯一の項目を取得するための

0

使用SingleOrDefault()

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

SingleOrDefaultが私に利用可能であると表示されていません –

+1

名前空間を追加しますSystem.Linq –

+0

確かに、あなたは 'FirstOrDefault'を意味しませんか? –

0

が複数の項目がないと、それは一つのアイテムを持っているという意味ではありません。 あなたは使用することができます。

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

( 'displayText'を割り当てる必要があり、' new List () 'の必要はなく、' ToArray() 'は必要ありません) –

関連する問題