2016-02-05 14 views
1

我有以下列出路口添加到另一個列表中的MVC

List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList(); 

List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList(); 

approverprofilesAspNetUser LIST和approverusersAspNetRole LIST,我怎麼能合併或兩個列表添加到一個列表?

+1

可能的重複http://stackoverflow.com/questions/7187996/intersect-two-list-in-c-sharp –

回答

1

而是合併或添加的,你可以把它序列化到一個類中原樣

Public Class MergeClass { 

    public List<AspNetUser> AspNetUsers {get;set;} 
    public List<AspNetRole> AspNetRoles {get;set;} 

} 

NOW-

var mergeList= new MergeClass { 
    AspNetUsers= approverprofiles.ToList(), 
    AspNetRoles= approverusers.ToList() 
} 

編輯

至於添加對象到現有的類是簡單

Public Class MergeClass { 

    public List<AspNetUser> AspNetUsers {get;set;} 
    public List<AspNetRole> AspNetRoles {get;set;} 
    public string MyObject {get;set;} 
} 

然後可以使用它 -

var mergeList= new MergeClass { 
     AspNetUsers= approverprofiles.ToList(), 
     AspNetRoles= approverusers.ToList(), 
     MyObject= "someString" 
    } 

訪問屬性 -

var aspNetUsersFromMergedList = MergeClass.AspNetUsers.Select(a=>a.Id)) 

作爲每你問題循環,你可以訪問這樣的屬性 -

foreach(var approvermail in MergeClass.AspNetUsers.ToList(){ 
    //do something 
} 
+0

,但如何添加對象到這個新的'mergeList' ?? – kez

+0

另一個問題彈出一次,我用你的方法。我有一個像這樣的循環'foreach(var mergevermail in mergeList){'但是在這裏我得到這個錯誤'foreach語句不能對'project_namea.Models.MergeClass'類型的變量進行操作,因爲'project_name.Models.MergeClass'沒有包含'GetEnumerator'' – kez

+0

@kez的公共定義,您是否允許公共訪問'MergeClass'屬性? – Manoj

0

嘗試

approverprofiles = approverprofiles .Concat(approverusers).ToList(); 

Concat返回IEnumerable<T>是兩個列表放在一起,它不修改任何現有的列表。另外,因爲它返回一個IEnumerable,所以如果你想把它分配給一個變量List<T>,,你必須在返回的IEnumerable<T>上調用ToList()

,或者你可以嘗試

approverprofiles.AddRange(approverusers) 
+1

你怎麼樣?你可以添加或連接2個不同的表? 你能給我參考嗎? – Manoj

0
List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList(); 

List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList(); 

approverprofiles.AddRange(approverusers); 
+1

這些列表類型不同。它必須失敗 – Manoj

0

使用下面的內置函數將第二個列表添加到第一個列表。

approverprofiles.AddRange(approverusers); 
相關問題