2016-03-22 7 views
-2

MailMessage'e Email Attachments eklemek zorundayım, bunu foreach ile yaptım ama LINQ ile değiştirmek istiyorum.LINQ C# ile bir dize listesinden bir e-postaya ekler nasıl eklenir?

email.Atamalar bir Dize Listesi'dir. Ben bunu nasıl emin değilim

The type 'System.Net.Mail.AttachmentCollection' has no constructors defined

:

mailMessage.Attachments= email.Attachments.Aggregate(new AttachmentCollection(), (c, r) => { c.Add(new Attachment(r)); return c; }); 

Ama folowing hata var:

Bunu çalıştık.

Herhangi bir öneri?

+1

: Ekler yalnızca alıcı, MailMessage meta veri aşağıya bakınız etti kendin. Yani belki daha fazla bilgi verin ve neyi başarmaya çalışıyorsunuz, neyi denediniz, sorunlarınız nelerdir ... – ehh

+0

Bana açıkladığın için, sorumu neyin yanlış olduğunu anlayamadığın için teşekkür ederim. Hemen önerdiğin gibi düzenlerim. Teşekkür ederim! – user3378165

+0

Sorun değil. şahsen ben bunun için tavsiye ederim – ehh

cevap

2

Eklenti türü AttachmentCollection türüdür. Ek Koleksiyon, Koleksiyon sınıfının altında yer alan Koleksiyon'dan türetilmiştir. O parametre olarak bir öğe olsun hangi Ekle görebilirsiniz

public class Collection<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable 
{ 
    public Collection(); 
    public Collection(IList<T> list); 

    public T this[int index] { get; set; } 

    public int Count { get; } 
    protected IList<T> Items { get; } 

    public void Add(T item); 
    public void Clear(); 
    public bool Contains(T item); 
    public void CopyTo(T[] array, int index); 
    public IEnumerator<T> GetEnumerator(); 
    public int IndexOf(T item); 
    public void Insert(int index, T item); 
    public bool Remove(T item); 
    public void RemoveAt(int index); 
    protected virtual void ClearItems(); 
    protected virtual void InsertItem(int index, T item); 
    protected virtual void RemoveItem(int index); 
    protected virtual void SetItem(int index, T item); 
} 

koleksiyonuna öğe eklemek tek yöntemdir. Örneğin, birden fazla öğe alabilecek AddRange yöntemi yoktur. Koleksiyona bir ürün grubu eklemenin tek yolu yapıcıdan geçiyor, bkz. Liste gibi parametre. Ancak Ekleri kullanarak zengin olamazsınız. Eğer herhangi bir sorun ya da hata gönderilmeyen Belki çünkü, bu tür soru için size göre bir şey denemek göstermektedir şey downvote alıyorsanız neden net değilim

public class MailMessage : IDisposable 
{ 
    public MailMessage(); 
    public MailMessage(string from, string to); 
    public MailMessage(MailAddress from, MailAddress to); 
    public MailMessage(string from, string to, string subject, string body); 

    public AlternateViewCollection AlternateViews { get; } 
    public AttachmentCollection Attachments { get; } 
    public MailAddressCollection Bcc { get; } 
} 
+1

Açıklama için teşekkür ederim, bu çok yararlı. Yani LINQ ile bir e-postaya eklerin eklenmesinin mümkün olmadığı anlamına mı geliyor? – user3378165

+0

Doğru, bu mümkün değil – ehh

+0

Tamam, bir for döngüsüne değiştirdim, bu şekilde eklerin ismini kolayca belirleyebilirim ... Yardımlarınız için çok teşekkür ederim! – user3378165

İlgili konular