2016-11-22 60 views
0

我有下面的代码片段,以数据作为IEnumarable列表获取和使用LINQ它们进行过滤,并将这些信息以列表/筛选列表项添加到集合中的ASP.NET MVC

IEnumerable<User> listUsers = ..// From DB 
    List<User> filteredUsers = new List<User>(); 

    if (listUsers != null) 
    {       
    foreach(var user in listUsers) 
    { 
     filteredUsers = listUsers.Where(x => x.GroupID == item).ToList();        
    }      
    } 

如何插入这些每个filteredUsers项目集合,我试着像下面但这是编译时错误,如何做到这一点正确

 IEnumerable<User> listUsers = ..// From DB 
     List<User> filteredUsers = new List<User>(); 
     IEnumerable<User> salistUsers = new List<User>(); 

     if (listUsers != null) 
     {       
     foreach(var user in listUsers) 
     { 
      filteredUsers = listUsers.Where(x => x.GroupID == item).ToList(); 
      salistUsers.Add(filteredUsers);       
     }      
     } 

回答

1

变化salistUsersIEnumerable<User>类型List<Users>和使用List.AddRange(collection As IEnumerable(Of T))方法。

IEnumerable<User> listUsers = ..// From DB 
List<User> salistUsers = new List<User>(); 

if (listUsers != null && !listUser.Any()) 
{       
    var filteredUsers = listUsers.Where(x => x.GroupID == item).ToList(); 
    salistUsers.Add(filteredUsers);            
} 
+0

这应该是在for循环或外? – kez

+0

没有必要使用'foreach'。 –

+0

错误\t''System.Collections.Generic.IEnumerable '不包含'Add'的定义,并且没有扩展方法'Add'接受'System.Collections.Generic.IEnumerable '类型的第一个参数' – kez

0

不能与IEnumerable使用.Add,salistUsers前人的精力是List

List<User> salistUsers = new List<User>(); 

Add方法用于添加单个对象。

尝试AddRange相反,它允许您添加列表:

if (listUsers != null && !listUser.Any()) 
{       
    var filteredUsers = listUsers.Where(x => x.GroupID == item).ToList(); 
    salistUsers.AddRange(filteredUsers);            
} 
+0

这是不工作''System.Collections.Generic.List .Add(User)'的最佳重载方法匹配有一些无效参数' – kez