2009-10-14 5 views
2

에서 LINQ 단일 치환을 만드시겠습니까? 물론이 코드가 C#을

var list = 1.To(5); 

:

public static class Helper 
{ 
    public static List<int> To(this int start, int stop) 
    { 
     List<int> list = new List<int>(); 
     for (int i = start; i <= stop; i++) { 
      list.Add(i); 
     } 
     return list; 
    } 
} 

이처럼 사용 : 당신이 그 목록을 많이해야하는 경우

답변

20
List<int> list = Enumerable.Range(1, n).ToList(); 
12
List<int> list = Enumerable.Range(1, n).ToList(); 
3

, 당신은 유용한 다음과 같은 확장 방법을 찾을 수 있습니다 일반적인 경우 Enumerable.Range 다른 사람들이 게시 한 것보다 더 많은 수 있습니다.하지만이 공유 줄 알았는데;) 당신은 c 이번에는 Ruby를 사랑하는 동료가 Enumerable.Range를 사용하여 얼마나 자세한 C#을 사용하는지 알려줍니다.

+0

이와 같은 범용 확장 메서드를 정의하는 경우'List '이 아닌'IEnumerable '을 반환하지 않는 것이 어떻습니까? 범위를위한 설립 된 대회는 거의 모든 곳에서 게으름을 피우고 있습니다. –

+0

List 을 요청했기 때문에 IEnumerable 이 아닙니다. 나는이 질문에 대해 이것을 어떻게 단축 할 수 있는지에 대한 일반적인 견본으로 썼다. Ruby 동료에게 보여주기 위해 ToList 호출을 피하기를 원할 것입니다.) 이제는이 메소드가 범용 메소드 일 가치가 있다고 생각한다면 계속 진행하여 IEnumerable 을 반환하도록하십시오. 이것은 수동으로 목록을 생성하는 대신 iterator 블록으로 만들 수도 있습니다. – OregonGhost

+0

@Pavel : 그게 정확히'Enumerable.Range'가하는 것이기 때문입니다. –