匿名类型添加到列表中

时间:2015-03-18 06:12:18

标签: c# asp.net asp.net-mvc

我有一个列表,并且有一些匿名类型。在这里我无法获得返回并且返回此处为0。

public IList<Supervisors> GetSupervisors()
    {
        List<Supervisors> lst = new List<Supervisors>();

        var AllUsr = iuserrepository.GetList(x => x.UserId != null);
        var xRole = irolerepository.GetSingle(x => x.RoleName.Equals("Supervisor"));
        var yRole = iusersinrolerepository.GetList(x => x.RoleId.Equals(xRole.RoleId));
        var userIds = yRole.Select(s=>s.aspnet_Users.UserId).ToList();
        var supRole = iuserrepository.GetList(x => x.UserId != null && userIds.Contains(x.UserId)).Select(x => new {UserId = x.UserId,UserName = x.UserName }).ToList();



        return lst;//<-- in here lst return 0.How to add it to a list
    }

3 个答案:

答案 0 :(得分:3)

最初您创建一个空列表:

List<Supervisors> lst = new List<Supervisors>();

然后在你方法的正文中,你不会在其中添加任何项目。

因此,当您返回时,列表为空。

此外,您可以在此列表中添加对象,其类型为Supervisors。您无法添加匿名类型对象。

根据您发布的内容,我建议如下:

var supRole = iuserrepository.GetList(x => x.UserId != null && 
                                      userIds.Contains(x.UserId))
                             .Select(x => new Supervisors
                              {
                                  UserId = x.UserId,
                                 UserName = x.UserName 
                              });

然后将以上序列添加到您的列表中:

lst.AddRange(supRole);

我们上面所做的是对从GetList返回到Supervisors类型的对象的序列中的每个元素进行投影。因此,supRole的类型将为IEnumerable<Supervisors>。因此,我们可以稍后使用列表的AddRange方法将这些对象添加到列表中。

重要提示

由于我不知道Supervisors类定义,因此使用属性名UserIdUserName时可能会出错。如果是这种情况,你应该相应地纠正它。

答案 1 :(得分:0)

您确实将值添加到列表中,这就是它返回0的原因

List<int> _list= new List<int>();
        _list.Add(2);

more

答案 2 :(得分:0)

你可以使用[SourceList] .AddRange([TargetList]); 请检查以下链接 http://www.dotnetperls.com/list-addrange