2012-04-11 7 views
2

をstring.Joinしようとすると、私は私の方法に最初の例http://www.dotnetperls.com/convert-list-stringを実装しようとしているが、私はメソッドの第2引数に一致する苦労している:のIList

string printitout = string.Join(",", test.ToArray<Location>); 

エラーメッセージ:

The best overloaded method match for 'string.Join(string, 
System.Collections.Generic.IEnumerable<string>)' has some invalid arguments 

すべてのIListインターフェイスはIEnurmerableでも実装されています(誰かが私に望んでいない限りここにはリストされていません)。

class IList2 
{ 
    static void Main(string[] args) 
    { 

    string sSite = "test"; 
    string sSite1 = "test"; 
    string sSite2 = "test"; 

    Locations test = new Locations(); 
    Location loc = new Location(); 
    test.Add(sSite) 
    test.Add(sSite1) 
    test.Add(sSite2) 
    string printitout = string.Join(",", test.ToArray<Location>); //having issues calling what it needs. 

    } 
} 
string printitout = string.Join(",", test.ToArray<Location>); 


public class Location 
{ 
    public Location() 
    { 

    } 
    private string _site = string.Empty; 
    public string Site 
    { 
     get { return _site; } 
     set { _site = value; } 
    } 
} 

public class Locations : IList<Location> 
{ 
    List<Location> _locs = new List<Location>(); 

    public Locations() { } 

    public void Add(string sSite) 
    { 
     Location loc = new Location(); 
     loc.Site = sSite; 
     _locs.Add(loc); 
    } 
} 

編集: 了解 "string.Join(" 使用 "テスト);"代わりに、リストには何の何らかの理由

「Ilistprac.Location、Ilistprac.Location、Ilistprac.Location」

:私はいくつかの理由のために、チェックマークと私の出力、出力をこれを閉じる前に、動作します。

答えて

4

01は必要ありません(あなたが.NET 4.0を使用している表示されますので)すべてのので、あなたが呼び出しに応答のための

string.Join(",", test); 
+0

ああ私は4.0を使用しています。 – nhat

+0

私はこの良い答えになる直前。私の出力は "Ilistprac.Location、Ilistprac.Location、Ilistprac.Location"と出力され、何らかの理由でリストのリスト項目には出力されません。 – nhat

+0

'Location'オブジェクトに' ToString() 'をオーバーライドしていないので、デフォルトの動作が得られます。 – dlev

1

試してください:あなたは括弧置く必要

string printitout = string.Join(",", test); 
+3

感謝を作ることができ、私はこのエラーメッセージが表示されます:呼び出しは、次のメソッドやプロパティの間であいまいです。 ' [String] .Join (文字列、System.Collections.Generic.IEnumerable ) 'および' string.Join(文字列、paramsオブジェクト[]) ' – nhat

2

から()を - ToArray<Location>後:

string printitout = string.Join(",", test.Select(location => location.Site).ToArray()); 
+0

これはほとんど動作しますが、エラーが発生します上記メッセージ – nhat

+0

@nhat - 上記を修正しました。 – DaveShaw

+0

ああラムダ、私はそれで良くはないが、私はそれを学ぼうとしている!実際にはIListのwhatsも正しく出力されます。 – nhat

2

あなたLocaionsタイプは、あなたがToArrayを必要としませんIEnumerable実装している場合:

string printiout = String.Join(",", test); 
+0

ありがとうございました! – nhat