两个列表的交集添加到 mvc 中的另一个列表
intersection of two list add to another list in mvc
我有以下列表
List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList();
List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList();
approverprofiles
是一个 AspNetUser
LIST 而 approverusers
是一个 AspNetRole
LIST ,我怎样才能将这两个列表合并或添加到一个列表中?
尝试
approverprofiles = approverprofiles .Concat(approverusers ).ToList();
Concat
returns 两个列表放在一起的 IEnumerable<T>
,它不会修改任何现有列表。此外,由于它 returns 是一个 IEnumerable,如果您想将它分配给一个 List<T>,
的变量,您必须在返回的 IEnumerable<T>
上调用 ToList()
。
或者你可以试试
approverprofiles.AddRange(approverusers)
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);
您可以将其序列化为一个 class 作为-
而不是合并或添加
Public Class MergeClass {
public List<AspNetUser> AspNetUsers {get;set;}
public List<AspNetRole> AspNetRoles {get;set;}
}
现在-
var mergeList= new MergeClass {
AspNetUsers= approverprofiles.ToList(),
AspNetRoles= approverusers.ToList()
}
编辑
只要将对象添加到现有 class 就很简单
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
}
使用下面的内置函数将第二个列表添加到第一个列表。
approverprofiles.AddRange(approverusers);
我有以下列表
List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList();
List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList();
approverprofiles
是一个 AspNetUser
LIST 而 approverusers
是一个 AspNetRole
LIST ,我怎样才能将这两个列表合并或添加到一个列表中?
尝试
approverprofiles = approverprofiles .Concat(approverusers ).ToList();
Concat
returns 两个列表放在一起的 IEnumerable<T>
,它不会修改任何现有列表。此外,由于它 returns 是一个 IEnumerable,如果您想将它分配给一个 List<T>,
的变量,您必须在返回的 IEnumerable<T>
上调用 ToList()
。
或者你可以试试
approverprofiles.AddRange(approverusers)
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);
您可以将其序列化为一个 class 作为-
而不是合并或添加Public Class MergeClass {
public List<AspNetUser> AspNetUsers {get;set;}
public List<AspNetRole> AspNetRoles {get;set;}
}
现在-
var mergeList= new MergeClass {
AspNetUsers= approverprofiles.ToList(),
AspNetRoles= approverusers.ToList()
}
编辑
只要将对象添加到现有 class 就很简单
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
}
使用下面的内置函数将第二个列表添加到第一个列表。
approverprofiles.AddRange(approverusers);