목록에서 IEnumerable 형식으로 변환


98
IEnumerable<Book> _Book_IE
List<Book> _Book_List

어떻게 변환하기 위해 어떻게해야 _Book_List으로 IEnumerable포맷?


58
명명 규칙은 불행하게도 고유합니다.
Kirk Woll 2011 년

6
적어도 그는 컨벤션이 있잖아요?
Femaref 2011 년

1
Kirk의 댓글에 "up"이 많은 이유를 궁금해하는 사람들은 변수 이름을 원하는대로 지정할 수 없기 때문입니다. 그것에 대한 규칙이 있으며, 코드가 명확하고 이해하기 쉽도록이를 따르는 것이 좋습니다. 그러면 Stack-overflow 또는 GitHub와 같은 곳에서 당신을 도우려는 사람들에게 도움이 될 것입니다! 더 많은 정보를 원하시면 로버트 C. 마틴의 Clean Code 책을 읽어보십시오 .
KADEM Mohammed

1
... 그리고 어떻게 Smurf Naming anti-pattern의 희생양이되지 않고 명명 규칙에 대해 갈 수 있을까요? devcards.io/smurf-naming-convention 일반적으로 네임 스페이스는 필요한 곳에 특이성을 제공 할 수 있습니다.
Meadock

ienumerable 로의 Convertint는 Linq 표현식에서 .Reverse ()를 사용해야 할 때 특히 유용합니다.
Zuabros

답변:


150

변환 할 필요가 없습니다. List<T>구현IEnumerable<T>인터페이스를 하므로 이미 열거 가능합니다.

이것은 다음을 갖는 것이 완벽하다는 것을 의미합니다.

public IEnumerable<Book> GetBooks()
{
    List<Book> books = FetchEmFromSomewhere();    
    return books;
}

만큼 잘:

public void ProcessBooks(IEnumerable<Book> books)
{
    // do something with those books
}

호출 될 수 있습니다.

List<Book> books = FetchEmFromSomewhere();    
ProcessBooks(books);

64

어셈블리 System.Core 및 System.Linq 네임 스페이스에서 확장 메서드 AsEnumerable을 사용할 수 있습니다.

List<Book> list = new List<Book>();
return list.AsEnumerable();

MSDN 링크 에서 언급했듯이 컴파일 타임에 목록 유형이 변경됩니다. 이렇게하면 필요한 컬렉션 만 열거 할 수있는 이점도 얻을 수 있습니다 (MSDN 예제 참조).


간단 해 보이지만 가장 쉽게 변환 할 수 있습니다. 감사합니다
Ishwor Khanal

1
Collection에 무언가를 추가하지 않으려면 IEnumerable을 사용 / 반환해야합니다.
AZ_

15

싱글 라이너를 사용하지 않는 이유 ...

IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;

11

내가 아는 한 List<T>구현 IEnumerable<T>. 변환하거나 캐스팅 할 필요가 없음을 의미합니다.


4
때에 따라 다르지. a IEnumerable<IList<obj>>를 로 설정하려고 IEnumerable<IEnumerable<obj>>하면 두 번째가 첫 번째에서 상속되지 않으므로 컴파일러 오류가 발생합니다.
Emaborsa

4
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;

일반 변형 인 경우 :

_Book_IE = _Book_List;

일반이 아닌 것으로 변환하려면 다음을 수행하십시오.

IEnumerable ie = (IEnumerable)_Book_List;

5
여기서 캐스트가 필요하지 않습니다.
Jon Skeet

2
제네릭이 아닌 인터페이스의 특정 메서드를 원하면 일부 메서드가 명시 적으로 구현되어 있습니까? 아니면 여기서 잘못된 길을 가고 있습니까?
Femaref 2011 년

0

당신은

using System.Linq;

에서 IEnumerable옵션 을 사용하려면 List.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.