2011-08-17 13 views
1

ImはEmail.SendMail()を使用している問題があります。私はEvent_Location、Event_Startなどの詳細をデータベースのイベントテーブルから "Email Msg"に追加する必要がありますが、varアイテムはすでにイベントによって呼び出されています。私は2つの変数、すなわちイベントとメンバーをforeachループまたは別のメソッドのどちらかに入れる方法があるかどうかを知りたいですか?あなたが欲しいプロパティのみを返すように匿名メソッドを使用することができます電子メールを送信するasp.net mvc 3

 public class Event 
{ 

    [ScaffoldColumn(false)] 
    [Key] 
    public int Event_ID { get; set; } 

    [Required(ErrorMessage = "A Event Location is required")] 
    [DisplayName("Event Location")] 
    public string Postal_Code { get; set; } 

    [DisplayName("Event Status")] 
    public string Event_Status { get; set; } 

    [DisplayName("Event Start Date")] 
    [Required] 
    public DateTime Event_Start { get; set; } 

    [DisplayName("Event End Date")] 
    [Required] 
    public DateTime Event_End { get; set; } 

    [DisplayName("Event Type")] 
    [Required(ErrorMessage = "A Event Type is required")] 
    public string Hobby_Code { get; set; } 

    [Required] 
    [StringLength(100)] 
    [DataType(DataType.MultilineText)] 
    [DisplayName(" Event Description")] 
    public string Event_Description { get; set; } 
+0

メンバーモデルとイベントモデルのクラスはどのように見えますか? – link664

+0

MemberのEvent_IDはEventのEvent_IDへの外部キー参照ですか?言い換えれば、すべてのメンバーは1つのイベントを持っていますか? – link664

+0

はいメンバーは1つのイベントに招待されました – Roo

答えて

1

イベントのためにメンバー

ため

public void Send() 
{ 
    var events = from a in db.Members.ToList() 
       join e in db.Events.ToList() on a.Hobby_Code equals e.Hobby_Code 
       where a.Postal_Code == e.Postal_Code || e.Event_Status ==("A") 

    var member= from w in db.Members.TOList() 
       join z in db.Events.ToList() on w.Event_ID equals z.Event_ID 
       select w 

    foreach (var item in events) 
     Email.SendMail(item.Member_Email_Address,"Subject","Email Msg",false); 
} 

モデルクラス

public class Member 
    { 
    [Key] 
    [ScaffoldColumn(false)] 
    public int Member_ID { get; set; } 



    [Required(ErrorMessage = "A Section Name is required")] 
    [DisplayName("Section Name")] 
    public string Postal_Code { get; set; } 


    [Required(ErrorMessage = "An email address is required")] 
    [DisplayName("Email Address")] 
    public string Member_Email_Address { get; set; } 



    [DisplayName("Hobby Code")] 
    [Required(ErrorMessage = "A Hobby is required")] 
    public string Hobby_Code { get; set; } 

    [DisplayName("Event ID")] 
    public int? Event_ID { get; set; } 

    public string FullName 
    { 
     get 
     { 
      return Member_Last_Name + " " + Member_First_Name; 
     } 
    } 


    public virtual Section Section { get; set; } 
    public virtual Event Event { get; set; } 

} 

モデルクラス、すなわち:

var events = from a in db.Members.ToList() 
       join e in db.Events.ToList() on a.Hobby_Code equals e.Hobby_Code    
       where a.Postal_Code == e.Postal_Code || e.Event_Status ==("A") 
       select new { email = a.Member_Email_Address, location = e.Event_Location, eventStart = e.Event_Start}; 

と入力し、 forループのように:

foreach (var item in events)  
    Email.SendMail(item.email,"Subject",String.Format("Location: {0}",item.location),false); // including all the other variables required and excluding the formatting 
+0

ありがとうございます。テーマ文字列の読みやすさに問題があり、そのすべてが参加しました。別にする必要がありますか? – Roo

+0

申し訳ありませんが、もう少し説明できますか? –

0

ASP .NET MVCの自動エンティティマッピングを正しく使用すると、すべての結合が行われます。メンバーではEvent_IDではなくEvent eventへの参照が必要です。次に、簡単に行うことができます:

foreach (var member in db.Members) 
{ 
    String msgBody = "You are invited to " && member.event.Event_Description && " on " && member.event.Event_Start; 

    Email.SendMail(member.Member_Email_Address,"Subject", msgBody, false); 
} 
関連する問題