2

MVC4 で EF を使用する 2 つのデータベースがあります。私は利用するためにSO全体を検索しました。アラートのリストを部分ビューに戻す必要があります。ただし、アラートは、特定の識別子を持つ特定のユーザー名でフィルタリングする必要があります。ビューは強く型付けされているので、そのままにしておきたいと思います。

リストに戻るLINQクエリがあり、それは特定のIDに関連付けられたユーザー名のリストです。2 番目の case ステートメントで、2 つのテーブル ルックアップが必要な場所を確認できます。ビューモデル クラスを使用せずにこれを実行したいと考えています。

コードは次のとおりです。

    public PartialViewResult DashboardAlerts()
    {
        Database.SetInitializer<AlertsContext>(null);
        AlertsContext db = new AlertsContext();

        Database.SetInitializer<MemberUsersContext>(null);
        MemberUsersContext mdb = new MemberUsersContext();

        var members = new List<MemberUsers>(mdb.MemberUsers);
        var alerts = new List<Alerts>(db.Alerts);

        var query = from x in alerts
                    join y in members
                    on x.username equals y.username
                    where y.clubID == (int)Session["ClubID"]
                    select new { username = y.username};

        var list = query.ToList();

        switch (Session["RoleName"].ToString())
        {
            case "GMC Admin": return PartialView(db.Alerts.ToList());
            case "Club Admin": return //return db.Alerts.ToList() that has only usernames from query.ToList();
            default: return PartialView(db.Alerts.Where(x => x.username == User.Identity.Name).ToList());
        }
    }

結論: クエリ リストのユーザー名プロパティの値のみを使用して db.Alerts を相互参照したいと考えています。

4

1 に答える 1

1

あなたの質問から、クエリにユーザー名があるものにアラートを絞り込みたいと考えています。ユーザー名を選択しないで、代わりにアラートを選択してください

var query = from x in alerts
                join y in members
                on x.username equals y.username
                where y.clubID == (int)Session["ClubID"]
                select x;

ユーザー名のリストではなくアラートが返されます。

于 2013-04-16T08:09:17.767 に答える