两个列表的交集添加到mvc中的另一个列表

时间:2016-02-05 05:23:59

标签: c# asp.net-mvc linq list asp.net-identity

我有以下列表

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,如何将这两个列表合并或添加到一个列表中?

4 个答案:

答案 0 :(得分:1)

您可以将其序列化为一个类as-

,而不是合并或添加
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()
}

修改

只要将对象添加到现有类中就很简单

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
}

答案 1 :(得分:0)

尝试

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

Concat会返回IEnumerable<T>这两个列表放在一起,它不会修改现有列表。此外,由于它返回IEnumerable,如果要将其分配给List<T>,的变量,则必须在返回的ToList()上调用IEnumerable<T>

或者您可以尝试

approverprofiles.AddRange(approverusers)

答案 2 :(得分: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);

答案 3 :(得分:0)

使用下面的内置函数将第二个列表添加到第一个列表。

approverprofiles.AddRange(approverusers);