2016-03-22 6 views
-2

メール添付ファイルをMailMessageに追加する必要があります。私はforeachを使ってメール添付ファイルを作成しましたが、LINQに置き換えたいと思っています。LINQ C#で文字列リストから電子メールに添付ファイルを追加するには?

foreach(string attachment in email.Attachments) 
    { 
     mailMessage.Attachments.Add(new Attachment(attachment)); 
    } 

email.Attachmentsは文字列のリストです。私はそれを行う方法がわからないんだけど

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; }); 

しかしfolowingエラーを得た:

は私がすることを試みています。

アドバイスはありますか?

+1

:添付ファイルのみゲッター、はMailMessageメタデータ下記参照ましたあなた自身。だから多分もっと多くの情報と何を達成しようとしているのですか、すでに何を試しましたか、あなたの問題は何ですか... – ehh

+0

私のことを説明してくれてありがとう、私は本当に私の質問に間違っているか分からなかった。あなたがすぐに提案したように編集します。ありがとうございました! – user3378165

+0

問題ありません。個人的に私はそれをupvote – ehh

答えて

2

添付ファイルはAttachmentCollection型です。 Collectionクラスのメタデータの下にある、Collectionから派生したAttachmentCollectionです。

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); 
} 

1つの項目をパラメータとして取得する追加が、項目をコレクションに追加する唯一の方法であることがわかります。たとえば、複数の項目を取ることができるAddRangeメソッドはありません。 コレクションにアイテムのバッチを追加する唯一の方法は、コンストラクタを使用することです。しかし、アタッチメントを使って豊かにすることはできません。あなたはすべての問題やエラーを投稿していなかったかもしれないので、あなたは、このような質問のためにあなたがで何かをしようとすることを示している何かをdownvoteを得ている理由は、私は明確ではないです

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

説明ありがとう、それは非常に便利です。つまり、LINQを使って電子メールに添付ファイルを追加することはできないということですか? – user3378165

+0

正解、これはできません – ehh

+0

これをforループに変更しました。この方法で、添付ファイルの名前を簡単に設定できます...すべてのあなたの助けをありがとう! – user3378165

関連する問題