有什麼方法可以在列表中的所有元素前插入前綴字符串"/directory/"
["file1.json", "file2.json"]
?如何在C#中的任何列表中的所有元素前追加一個字符串<string> C#
結果我在找的是["/directory/file1.json", "/directory/file2.json"]
。
有什麼方法可以在列表中的所有元素前插入前綴字符串"/directory/"
["file1.json", "file2.json"]
?如何在C#中的任何列表中的所有元素前追加一個字符串<string> C#
結果我在找的是["/directory/file1.json", "/directory/file2.json"]
。
你可以使用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方法,因爲這是連接目錄/文件名的最好方法,因爲它應該是平臺獨立的。
您可以使用擴展方法Enumerable.Select
。有兩種調用Select
的方法有兩種:
方法的語法
var originalList = new List<string> { "file1.json", "file2.json" };
var list = originalList.Select(e => "/directory/" + e);
查詢語法
var originalList = new List<string> { "file1.json", "file2.json" };
var list = from e in originalList select "/directory/" + e;
兩者是相同的。
您可以使用類似下面,它會給你一個列表按您的要求:
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
幫你做這個手術,這將在內部循環通過集合中的每個元素和追加與每個項目所需的字符串,讓您的列表按您的要求
試試這個:
List<string> yourlist = new List<string> { "file1.JSON", "file2.JSON" };
var directory = "/directory/";
yourlist = yourlist.Select(f => string.Concat(directory,f)).ToList();
個
全部採用Select
的答案實際上是創建,如果你真的想改變現有列表中的值,然後只需用一個for
循環
for(int i = 0; i < fileList.Count; i++)
fileList[i] = @"/directory/" + fileList[i];
其實您的代碼段是不是獨立於平臺的一個新的列表。在Windows上它產生的東西既不是路徑也不是網址。 –
這是'Select()'方法的一個例子。 –
然後使用簡單的字符串連接代替'Path.Combine'。產生無意義結果的例子並不是很有用IMO :) –