我有一个列表,并且有一些匿名类型。在这里我无法获得返回并且返回此处为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
}
答案 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
类定义,因此使用属性名UserId
和UserName
时可能会出错。如果是这种情况,你应该相应地纠正它。
答案 1 :(得分:0)
答案 2 :(得分:0)
你可以使用[SourceList] .AddRange([TargetList]); 请检查以下链接 http://www.dotnetperls.com/list-addrange