2016-07-18 10 views
0

1 MVCでコントローラコードを使用しています。多対多の関係にある別のエンティティセットから1つのエンティティセットのリストを取得する方法

public JsonResult GetPrioritiesByTeam(int id) 
    { 
     List<Priority> priorities = new List<Priority>(); 
     if (id > 0) 
     { 
      priorities = db.Priorities.Where(p => p.Team == id).ToList(); 

     } 
     else 
     { 
      priorities.Insert(0, new Priority { Id = 0, PriorityDescription = "--Select a Team first--" }); 
     } 
     var result = (from r in priorities 
         select new 
         { 
          id = r.Id, 
          name = r.PriorityDescription 
         }).ToList(); 

     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

priorities = db.Priorities.Where(p => p.Team == id 

が私に渡されたチームに基づいて優先順位のリストを取得してい声明:

は私がインクルードがチームに基づいて優先順位リストのエンティティに関連しているところワーキングフォローコードを持っていますパラメータidで指定します。

私は今、チームに関連する別のエンティティ、つまり「メンバー」というエンティティで同じ結果を達成しようとしています。しかし、関係は1対多ではありません。それは多対多であり、私は中間のエンティティコール 'teammembers'を持っています。

チームは依然として選択肢を推進しているエンティティです。チームが選ばれたら、私はチームメンバーのすべてのチームメンバーエントリを私に渡す必要があります。そして、上記の優先順位コードと同様のものが必要です。選択したチームに基づいて特定されたチームメンバーに基づいてメンバーリストを与えます。

提供されているコードに基づいて、else節はvarの結果コーディングと同様のコーディングになると思います。

私はちょうどid> 0の条件の節のコーディング権を得ているようです。

チームメンバーを介してチームのメンバーを取得するために、この句を多対多に書く方法を教えてください。

エンティティチームはIdとTeamDescription、エンティティのメンバーはIdとMemberName、エンティティのteammemberはID、teamIdとMemberIdは単純なものから多くのものまでを想定できます。

LINQメソッド構文とLINQクエリ構文を試していましたが、動作しませんでした。提案された変更

public JsonResult GetMembersByTeam(int id) 
    { 
     List<Member> members = new List<Member>(); 




     if (id > 0) 
     { 
      **members = Members.Where(needed clause).ToList();** 
     } 

     else 
     { 
      members.Insert(0, new Member { Id = 0, MemberFullName = "--Select a Team first--" }); 
     } 
     var result = (from m in members 

         select new 
         { 
          id = m.Id, 
          name = m.MemberFullName 
         }).ToList(); 

     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

Entity Diagram

現在のコード:あなたは

新しいコードは、私が働いID> 0句を必要とする以外、次のようになります提供することができます任意の助け

感謝

public JsonResult GetMembersByTeam(int id) 
    { 
     List<Member> members = new List<Member>(); 


     if (id > 0) 
     { 


      //members = db.Teams.Where(p => p.Id == id) 
      // .SelectMany(e => e.TeamMembers) 
      // .Select(e => e.Member) 
      // .ToList(); 

      members = db.TeamMembers.Where(p => p.Team == id) 
.Select(e => e.Member) 
.ToList(); 

     } 
     else 
     { 
      members.Insert(0, new Member { Id = 0, MemberFullName = "--Select a Team first--" }); 
     } 
     var result = (from m in members 

         select new 
         { 
          id = m.Id, 
          name = m.MemberFullName 
         }).ToList(); 

     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

エラー:

暗黙的にタイプを変換できません 'System.Collections.Generic.List' 'System.Collections.Generic.List、ManageHR5.model.Member>' には

+0

のplsは、エンティティを追加します上記のエンティティダイアグラムを追加した –

+0

のモデル。チームには、他の関連するエンティティがありますが、上記の例と同様のコードを持つことで、メンバーが最初に選択されたチームによって識別され、チームメンバーのエンティティを通過しているという問題はありません。最終結果はreturn文によって返されるメンバのドロップダウンリストです。 –

答えて

0

はこれを試してみてください。

members = db.TeamMembers.Where(p => p.Team == id) 
    .Select(e => e.Member1) 
    .ToList(); 
+0

Mohammadに感謝します。両方のバージョンでコントローラコードに入れたときの印象を与えますが、別のエラーが出ています:重大度\tコード\t説明\tプロジェクト\tファイル\tライン\t抑制状態 エラー\t CS0029 \t暗黙的に変換できません。タイプSystem.Collections.Generic.List」から 'System.Collections.Generic.List ' '\t ManageHR5 \t C:¥Users¥Lyndon.A3HR¥documents¥visual studio 2015¥Projects¥ManageHR5¥ManageHR5¥Controllers¥ServiceRequestsController.cs アクティブ –

+0

両方とも同じエラーが表示されます –

+0

編集済みの投稿、plz –

関連する問題