所以我有一个包含文本文件的列表,但现在我想将.text文件添加到单个.Add中。我很难解释,但希望你能用这个例子理解:
List.Add(File.ReadAllLines("C:\\Users\\glb1.txt" + "C:\\Users\\glb2.txt").ToList());//This isnt possible??
List.Add(File.ReadAllLines("C:\\Users\\abc.txt").ToList());
List.Add(File.ReadAllLines("C:\\Users\\klm1.txt" + "C:\\Users\\klm2.txt").ToList());//This isnt possible??
那么可以将2个文本文件添加到列表的一个[]中吗?
答案 0 :(得分:2)
当然可以。使用AddRange:
List.AddRange(File.ReadAllLines("C:\\Users\\glb1.txt"));
List.AddRange(File.ReadAllLines("C:\\Users\\glb2.txt"));
List.AddRange(File.ReadAllLines("C:\\Users\\abc.txt"));
List.AddRange(File.ReadAllLines("C:\\Users\\klm1.txt"))
List.AddRange(File.ReadAllLines("C:\\Users\\klm2.txt"))
一次使用一个路径。请注意,在添加ToList
之前无需调用它们
答案 1 :(得分:2)
您可以使用File.ReadLines
+ Enumerable.Concat
+ List.AddRange
:
var allLines = File.ReadLines(path1)
.Concat(File.ReadLines(path2))
.Concat(File.ReadLines(path3))
.Concat(File.ReadLines(path4))
.Concat(File.ReadLines(path5));
List.AddRange( allLines );
答案 2 :(得分:1)
或者,甚至更好,使用LINQ:
var files = new []{"glb1.txt", "glb2.txt", "abc.txt", "klm1.txt", "klm2.txt"}; //An array of all the file names you want
var mylist = files.SelectMany(p=>File.ReadAllLines(Path.Combine(@"C:\Users", p))).ToList(); //This list will now hold every line from each of the files
SelectMany
的作用类似Select
,但它也会将列表拼凑成一个。这样做的是,对于files
中的每个文件名,它将读取完整路径,并选择(返回)一个行列表。然后,SelectMany将所有行组合成一个列表。
如有必要,您现在可以撰写List.AddRange(mylist)
(或者更好的是,您可以将var mylist = ...
替换为List = ...
)。
此外,您应该小心命名List
"列表",因为这可能会造成混淆。使用除类型名称之外的其他名称,例如" myList"相反,总是一个好主意。