2010-05-17 4 views
12

을 목록에 IEnumerable을 을 변환 할 수 없습니다 I는 다음과 같이 정의 된 목록이 있습니다 C# Linq에이 - 암시 적으로 <string>

public List<string> AttachmentURLS; 

이 같은 목록에 항목을 추가하고 :

instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"].Value.Split(';').ToList().Where(Attachment => !String.IsNullOrEmpty(Attachment)); 

을하지만 무엇입니까 이 오류 : 암시 적으로 IEnumerable을 목록으로 변환 할 수 없습니다.

무엇이 잘못 되었나요?

+0

타입 캐스트를 추가 했습니까? instruction.AttachmentURLS = (목록 ) curItem.Attributes ... 물론, .ToList() 메소드를 잊어 버렸습니다. 끝까지 추가하십시오. – Nilbert

답변

31

Where 메서드는 IEnumerable<T>을 반환합니다. 과 같이 끝에

.ToList() 

을 추가하십시오 :

instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"].Value.Split(';').ToList().Where(Attachment => !String.IsNullOrEmpty(Attachment)).ToList(); 
+0

나는 그 문장의 중간에서 기존의 .ToList를 제거 할 수 있다는 것을 의미한다고 생각하십니까? –

+3

예, 제거 할 수 있습니다. – smoak

+0

이 오류가있어, google'd, 분명히 나는 ​​이미 그것을 upvoted 전에 여기 와서, 나는 카페인이 더 필요합니다. – PurpleSmurph

7
은 확장 메서드는 배열에서 작동합니다 IEnumerable<string>Where을 반환이

instruction.AttachmentURLS = curItem 
    .Attributes["ows_Attachments"] 
    .Value 
    .Split(';') 
    .Where(Attachment => !String.IsNullOrEmpty(Attachment)) 
    .ToList(); 

등 끝으로 .ToList() 이동

때문에 ToListSplit 후 필요하지 않습니다.

2

.ToList() 마지막에 있어야합니다. 코드에서 이전에 .ToList() 작업을 수행 한 후 다시 이전 상태로 이동하기 때문입니다. Where 메서드는 IEnumerable을 반환합니다.

+7

다른 사람이 8 시간 후에 왜 같은 대답을합니까? – Oliver

관련 문제