2012-10-05 2 views
4

나는이처럼 보이는 문자열의 일부 C# 코드를 가지고 :Linq를 사용하여 문자열의 줄 바꿈을 기반으로 IEnumerable을 만들려면 어떻게해야합니까?

content = 'var expData = 
         details.Select(x => x.Explanation.TextWithHtml).ToList(); 
var score = resData.SequenceEqual(ansData); 
var explanation = "";'; 

그렇게 코드는 다음 사용하여 LINQ로 변환됩니다 내가 할 수 있습니까?

<td>01</td><td>var expData = 
        details.Select(x => x.Explanation.TextWithHtml).ToList();</td> 
<td>02</td><td>var score = resData.SequenceEqual(ansData);</td> 
<td>03</td><td>var explanation = "";</td> 
+0

을 그래서, 당신은''내부의 모든 것을 먹고 싶어 그것은에 의해 분할;? 으로 모든 줄을 수치화 하시겠습니까? – JleruOHeP

+0

아니요 라인 피드에서 분할 한 다음 각 줄마다 증가하는 색인을 추가해야합니다. – Alan2

답변

8

그것은 당신이 뭔가를 원하는 같은 소리 :

var lines = text.Split(new[] { "\r\n" }, StringSplitOptions.None) 
       .Select((line, index) => 
        string.Format("<td>{0:00}</td><td>{1}</td>", 
         index + 1, EscapeHtml(line))); 

당신은 비록 EscapeHtml를 작성해야합니다 것입니다 - 당신은 여전히 ​​HTML 태그로 결국 귀하의 C# 코드에 태그를 원하지 않는다 !

+2

인덱스가 0부터 시작하지 않습니까? – Michael

+0

감사합니다. 나는 이것을 지금 시도 할 것이다. – Alan2

+0

@ 마이클 : 고마워, 고칠거야. –

4

이 작동합니다, 당신은 Enumerable.Select에서 인덱스를 얻을 수 있습니다 :

IEnumerable<String> code = 
    content.Split(new[] { Environment.NewLine }, StringSplitOptions.None) 
      .Select((line, index) => 
       string.Format("<td>{0}</td><td>{1}</td>", 
        (index + 1).ToString("D2"), line)); 

How to: Pad a Number with Leading Zeros

+1

왜 빈 줄을 제거 하시겠습니까? 소스 코드를 읽는다면 가독성을 위해 삽입 된 멋진 빈 줄을 보존하고 싶습니다. –

+0

@ 존 : 좋은 지적, 정정 : 기대에 대한 OP가 빈 줄 (또는 시작/끝 부분의 공백)을 제거해야하는 경우 :'StringSplitOptions.None'을'StringSplitOptions.RemoveEmptyEntries'로 변경하면됩니다. –

+0

@Tim - 빈 줄을 유지하고 싶습니다. – Alan2

관련 문제