2010-05-17 35 views
12

Listeye IEnumerable dönüştürülemez Böyle tanımlanan bir listesi vardır: C# Linq - örtük <string>

public List<string> AttachmentURLS; 

Böyle listeye öğe ekliyorum:

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

Ama alıyorum Bu hata: Implicitly IEnumerable List 'e dönüştürebilir

Neyi yanlış yapıyorum?

+0

Bir tür döküm eklemeye çalıştınız mı? instruction.AttachmentURLS = (Liste ) curItem.Attributes ... Elbette .ToList() yöntemini unuttum. Sadece sonuna kadar ekleyin. – Nilbert

cevap

31

Burada, yöntem bir IEnumerable<T> değerini döndürür. şöyle sonuna

.ToList() 

eklemeyi deneyin:

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

Sanırım bu, varolan .ToList'imi ifadenin ortasından kaldırabileceğim anlamına mı geliyor? –

+3

Evet, kaldırabilirsiniz. – smoak

+0

Bu hatayı aldım, google'deyim, görünüşe göre daha önce bastım ve daha önce buradayım, daha fazla kafeine ihtiyacım var. – PurpleSmurph

7
uzatma yöntemi diziler üzerinde çalışacak IEnumerable<string> ve Where döndüren bu

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

The gibi sonuna .ToList() Taşı

yüzden ToListSplit sonra gerekli değildir.

2

.ToList() son olmalıdır. Çünkü kodunuzda daha önce .ToList() işlemini gerçekleştirirsiniz ve bundan sonra bir önceki duruma geçer. Where yöntemi bir IEnumerable döndürür.

+7

Neden başka birinin yapmasından sekiz saat sonra aynı cevabı veriyorsunuz? – Oliver