2012-05-24 3 views
2

IEnumerable을 반환하는 외부 라이브러리를 사용하고 있습니다. 내가 그 모델을받은 후에는 몇 가지 모델을 추가하고 싶습니다. 이는 IList 또는 다른 컬렉션을 사용할 때만 가능합니다. 그래서 IEnumerable.ToList() 메서드를 사용하여 목록으로 변환하려고 시도하면 IEnumerable을 반환합니다. 그게 내가 기대했던 것이 아니야? .ToList()을 올바르게 사용하고 있습니까? 아니면 내 문제를 해결할 수 있을까요? 사전에 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Bogus.Models.Browser.Language>' to 'System.Collections.Generic.IList<Bogus.Models.Browser.Language>'. An explicit conversion exists (are you missing a cast?).ToList()를 사용하여 IEnumerable을 IList로 변환 하시겠습니까?

감사 :

IList<Models.Browser.Language> languages = GetLanguages(dateDrom, dateTo).ToList(); 
IList<Models.Browser.Language> primaryItems = languages.Take(10); 

이 마지막 줄이 말하는 오류가 발생합니다 :

이 내가 지금까지이 내 코드입니다!

답변

22

languages의 값은 List<>에 대한 참조입니다,하지만 당신이에 Take(10)를 호출하는 것은 목록을 반환하지 않는.

IEnumerable<Models.Browser.Language> languages = GetLanguages(dateDrom, dateTo); 
IList<Models.Browser.Language> primaryItems = languages.Take(10).ToList(); 

를 또는 하나의 호출을 수행합니다 :

은 그냥 ToList() 전화를 이동 또한

var primaryItems = GetLanguages(dateDrom, dateTo).Take(10).ToList(); 

이 꽤 정확하지 :

내가 가진 후 그것들을 받았다 나는 결국 일부 모델을 추가하고 싶다.

대안은 Concat을 사용하는 것입니다. 예 :

var items = GetLanguages(dateDrom, dateTo).Take(10).Concat(fixedItems); 
+0

대단히 빠른 aswer. 이제 예상대로 작동합니다. 정말 도움을 주셔서 감사합니다! –