使用C#与LINQ无法为var变量添加集合?如何为无Add/AddRange的roles添加元素
如何向无Add/AddRange方法的roles集合添加元素?
嘿,这问题我熟!你遇到的情况大概率是因为userRoleRepository.Get()返回的是只读集合类型(比如IEnumerable<Role>),这种类型只支持遍历,本身没有添加元素的方法。要解决这个问题,只需要把它转换成可变集合就行,具体步骤如下:
方法一:先转换为List再添加
先把原集合转成List<Role>(可变集合,自带Add/AddRange方法),然后再添加新元素:
// 先获取原集合 var roles = userRoleRepository.Get(q => q.user_id.Equals(username, StringComparison.InvariantCultureIgnoreCase)); // 转换为可变的List var mutableRoles = roles.ToList(); // 添加新的Role元素(假设你的Role类有对应的属性可赋值) mutableRoles.Add(new Role { ID = "124", Name = "Jack" });
方法二:获取时直接转为List
如果你一开始就知道要修改集合,可以在获取数据的时候直接转成List,后续操作更方便:
// 获取时直接转为List var roles = userRoleRepository.Get(q => q.user_id.Equals(username, StringComparison.InvariantCultureIgnoreCase)).ToList(); // 直接添加元素 roles.Add(new Role { ID = "124", Name = "Jack" });
小提示
如果你的Role类没有无参构造函数,记得用对应的带参构造方法创建实例,比如new Role("124", "Jack"),具体要看你的类定义来调整哦。
内容的提问来源于stack exchange,提问作者user9704250
相关产品推荐
相关产品推荐

