2017-06-25 78 views
0

我有兩個表稱爲「用戶」和「訂閱」。使用這些控制器我能夠檢索所有用戶數據但我只想檢索訂閱列中名爲「狀態」的Subscription狀態= 1的那些用戶數據。請指教我如何過濾我的結果關係數據篩選器

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.Mvc; 
using WebApplication2.Models; 

namespace WebApplication2.Controllers 
{ 
    public class EmailCampaignController : Controller 
    { 
     private db_likEntities db = new db_likEntities(); 


     // GET: Only Subscribed Users info 
     public ActionResult Index() 
     { 
      var users = db.Users.Include(u => u.Countries); 
      return View(users.ToList()); 
     } 

    } 
} 
+0

用戶和訂閱表是如何關聯的? –

+0

我已經存儲了用戶的外鍵到訂閱列名爲「UserId」,以確定其關係 –

+0

因此,用戶類在您的模型中有訂閱屬性?你可以分享用戶和訂閱課程嗎? –

回答

1

試試這個編輯。希望您的用戶表具有名爲status的列,否則這將無法工作。

public class EmailCampaignController : Controller 
{ 
    private db_likEntities db = new db_likEntities(); 


    // GET: Only Subscribed Users info 
    public ActionResult Index() 
    { 
     //first get all subscriptions whose status is 1 
    var trueSubscriptions = db.Subscriptions.Where(s => s.status == 1).ToList(); 

    //use this variable to filter users by Id 
    List<User> users = new List<User>(); 

    var allUsers = db.Users.Include(u => u.Countries); 

    for (int i = 0; i < trueSubscriptions; i++) 
    { 
     users.Add(allUsers.FirstOrDefault(x => x.Id == trueSubscriptions[i].UserId)); 
    } 


    return View(users.ToList()); 
    } 

} 

一個相當簡單的方法來達到這個目的,你必須編輯你的模型是這樣的。

模式

public class User 
{ 
    public int id{get;set;} 
    public virtual Subscription subscription{get;set;} 
} 

public class Subscription 
{ 
    public int id{get;set;} 
    public bool status{get;set;} 
    public int UserId{get;set;} 
} 

通過這種方法,你會簡單地得到你所訂閱的用戶喜歡這一點。

`var users = db.Users.Include(u => u.Countries) 
         .Where(u => u.subscription.status == true) 
         .ToList(); 

    return View(users);` 
+0

這是一個簡單而直接的解決方案,它可以在後臺執行 –

+0

Bro,在「Subscription」表中有兩個不同的表稱爲 - 「Users」和「Subscription」以及「status」列。得到它了?所以我必須訪問「訂閱」才能過濾思考。有想法? –

+0

然後我猜你在Subscriptons表中也有一個Users表的外鍵,對吧?如果是這樣,告訴我這樣我可以編輯這個答案。 – devTimmy