2016-06-13 13 views

回答

8

你可以使用LINQ擴展方法: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項目。我使用的是Path.Combine方法,因爲這是連接目錄/文件名的最好方法,因爲它應該是平臺獨立的。

+1

其實您的代碼段是不是獨立於平臺的一個新的列表。在Windows上它產生的東西既不是路徑也不是網址。 –

+0

這是'Select()'方法的一個例子。 –

+0

然後使用簡單的字符串連接代替'Path.Combine'。產生無意義結果的例子並不是很有用IMO :) –

0

您可以使用擴展方法Enumerable.Select。有兩種調用Select的方法有兩種:

  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]; 
相關問題