2016-06-13 5 views
-2

"/directory/"という接頭文字をリスト内のすべての要素の前に挿入する方法はありますか["file1.json", "file2.json"]リスト内のすべての要素の前に文字列を追加するには C#

結果私が探しているのは["/directory/file1.json", "/directory/file2.json"]です。 Select()

List<string> myList = new List<string> { "file1.JSON", "file2.JSON" }; 

var directory = "/directory"; 

myList = myList.Select(filename => Path.Combine(directory, filename)).ToList(); 

これはリストにPath.Combine(directory, filename) foreachの項目を実行します:

答えて

8

あなたは、LINQの拡張メソッドを使用することができます。私はPath.Combineメソッドを使用しています。なぜなら、ディレクトリ/ファイル名を連結する最善の方法は、プラットフォームに依存しないためです。

+1

が実際にあなたのコードスニペットは、プラットフォームに依存しないで使用します。 Windowsでは、パスとURLのどちらも生成されません。 –

+0

これは 'Select()'メソッドの例です。 –

+0

次に、 'Path.Combine'の代わりに単純な文字列連結を使用します。無意味な結果を生み出す例はあまり役に立たないIMO :) –

0

拡張方法Enumerable.Selectを使用できます。 Selectを呼び出す2つの方法があります。

  1. メソッドの構文

    var originalList = new List<string> { "file1.json", "file2.json" }; 
    var list = originalList.Select(e => "/directory/" + e); 
    
  2. クエリ構文

    var originalList = new List<string> { "file1.json", "file2.json" }; 
    var list = from e in originalList select "/directory/" + e; 
    

はどちらも同じです。

0

あなたの要件ごとにあなたのリストを与える以下のように使用することができます。

string [email protected]"/Directory/"; 
List<string> JsonList= new List<string>(){"file1.JSON","file2.JSON"}; 
var AppendedLis=JsonList.Select(x=> Path.Combine(stringToappend, x)).ToList(); 

注: - あなたはこの操作を行うには LINQ拡張メソッド.Select助け、内部的に反復しますコレクション内の各素子を介して、各項目に必要な文字列を追加し、要件ごとにあなたのリストを与える

2

これを試してみてください:

List<string> yourlist = new List<string> { "file1.JSON", "file2.JSON" }; 
var directory = "/directory/"; 
yourlist = yourlist.Select(f => string.Concat(directory,f)).ToList(); 
2

Selectを使用してすべての答えは、実際に新しいリストを作成しているあなたは本当に既存のリストの値を変更したい場合は、その後だけforループ

for(int i = 0; i < fileList.Count; i++) 
    fileList[i] = @"/directory/" + fileList[i]; 
関連する問題