2013-03-07 6 views
1

특정 폴더의 배열에 선택된 파일 목록이 있습니다. 문자열 배열에서 문자열 변환에 Linq 구문이 필요합니다.

String[] allfiles = System.IO.Directory.GetFiles(Target, "*.*", System.IO.SearchOption.AllDirectories); 

나는이 모든 문자열 변수로 파일을 각각의 라인은 LINQ의 도움으로 "\ n을"문자로 추가 변환이 필요합니다. 나는 루핑의 도움을 받아 아래와 같이 할 수 있지만 LINQ 구문에서는 필요합니다. 쉬운

String strFileName = string.Empty; 

for (int i = 0; i < allfiles.Length ; i++) 
    strFileName = strFileName + "\n" + allfiles[1] ; 
+1

나는'allfiles [i]' –

+0

위의 코드로 문제를 해결할 수 없습니다. –

+1

@HamletHakobyan 분명히. 그럴 수만 있다면, 왜 그가 여기서 물어볼 것입니까? – Nolonar

답변

5

충분히

String.Join("\n",allFiles) 
-1

이는 대신 string.Join() 메소드를 사용 할 Linq는 필요하지 않습니다.

String strFileName = string.Join("\n", allfiles); 
+0

'string.Concat'의 과부하 (http://msdn.microsoft.com/en-gb/library/system.string.concat.aspx)에는'string'과'IEnumerable '이 있는데, – Jamiec

-1

당신은 그것을 위해 LINQ가 필요하지 않습니다

String.Join(delimiter,stringArray); 
0

작동합니다 다음. 그냥 간단한 string.Join() 메서드를 사용하십시오. 모든 파일을 읽을 때까지 기다릴 필요가 없습니다

string.Join("\n",allfiles); 
4

당신은 Jamiec의 대답에 도시 된 바와 같이, 당신은 String.Join 방법을 사용할 수 있습니다, 그렇게 Linq는 필요하지 않습니다. 당신이 정말로 Linq에 함께하고 싶어

이제, 당신은 Aggregate을 사용할 수

string strFileName = allfiles.Aggregate("", (acc, file) => acc + "\n" + file); 

더 좋은 방법을 사용하여 StringBuilder :

string strFileName = allfiles.Aggregate(
            new StringBuilder(), 
            (acc, file) => acc.AppendLine(file), 
            acc => acc.ToString()); 
+0

+1 stringbuilder 솔루션의 경우 – Jamiec

+1

첫 번째 대답은 실제로 LINQ를 사용하는 경우 +1입니다. –

2

는 LINQ를 사용하는 요구의 경우 :

var result = allFiles.Aggregate(new StringBuilder(), 
           (sb, s) => sb.AppendLine(s), 
           sb => sb.ToString()); 
관련 문제