2017-05-28 9 views
0

私がやりたいことは、もっと複雑なクラス(複数のプロパティを持つ)を除いて、これに似ています。クラスのプロパティを別々の文字列にシリアライズ

Convert a list to a string in C#

私はこのリストを移入しながら、私もその後に正規表現

で使用されている名前のプロパティ、と |区切られた文字列を移入リスト

に格納された複数のプロパティを持つクラスを持っています

リストを作成した後、リストのクラスのNameプロパティから別の文字列(|)を簡単に作成できますか?移入され

サンプルコード

クラス:

public class Thing 
{ 
    public MyParentClass parent; 
    public string Name;   
    public List<string> OtherThings = new List<string>(); 

    public Thing(string path) 
    { 
     // Here I set the Name property to the filename 
     Name = Path.GetFileNameWithoutExtension(path); 
    } 

} 

は、コードの取り込み:

public List<Thing> Stuff = new List<Thing>(); 
public string AllThings = ""; 

void GetThings(files) 
{ 
foreach (string f in files) 
    { 
     Stuff.Add(f) 
     AllThings = AllThings + Path.GetFileNameWithoutExtension(f) + "|"; 
    } 
} 

をそれでは、私が知りたいことはある:私はAllThings = AllThings +行を削除し、代わりに後AllThingsを取り込むことができますすべてのクラスが読み込まれますか?

私はこのような何かしようとした場合:

AllCubes = string.Join("|", Stuff.ToArray()); 

を私は

CS0121を取得する呼び出しは次のメソッドまたは プロパティ間のあいまいです:「string.Join(文字列、のparamsオブジェクト[]私はそれを知っているように何の驚きではありません)」と 'string.Join(文字列、IEnumerableを')

はそのSIMPではありませんle - 試して見たいだけでした

答えて

1

String.Joinを動作させるには、カスタムタイプではなく、文字列のコレクションを提供する必要があります。

この場合、暗黙的にobjectまたはstringになる可能性があるため、あいまい性は共分散によるものです。

だからではなく、あなたのアプローチは、明示的にそれがstringになることを述べ、そのstringとしてobjectの特定の性質を押して先に行く:

AllCubes = string.Join("|", Stuff.Select(x => x.Name));を。

IEnumerable<string>を満たすIEnumerablestringsを提供します。

+0

優れています。それはLINQですよね? –

+0

@ Nick.McDermaidはい、もっともです。 – Karolis

関連する問題