无法使用linq和c#将项目范围添加到var

时间:2018-05-30 13:17:11

标签: linq

我有以下用户列表:

var roles = userRoleRepository.Get(q => q.user_id.Equals(username, StringComparison.InvariantCultureIgnoreCase));

角色有两个属性,一个是(ID,Name),如何在我获得列表后添加一个集合?因为角色,没有添加或添加范围,我想添加(“124”,“杰克“)

1 个答案:

答案 0 :(得分:1)

在我看来,UserRoleRepository是您(公司)自己的一个类的对象。这个类有一个Get函数,它有一些返回值。

唉,你忘了告诉我们返回的类型。从代码片段中,我假设返回的对象不是一个对象序列,而是一个单个对象,可能是您称之为UserRole的对象。返回的UserRoleuserRoleRepositoryuser_id的{​​{1}},其等于某个字符串userName

由于Get函数只返回一个UserRole,因此向这个对象添加集合不是一个有意义的操作,除非此UserRole具有添加集合的功能。但正如你告诉我们的那样:你的UserRole没有这样的功能。

或者您在描述中有点草率,是否要将UserRoles添加到UserRoles的{​​{1}}集合中,这将是您的Get函数的返回?唉:您没有给我们定义Get函数的返回值。

如果Get返回一个UserRole,并且您想要将此获取的UserRole与您自己的UserRoles序列组合在一起,请执行以下操作:

UserRole fetchedUserRole = userRoleRepository.Get(...);
List<UserRole> userRoles = new List<UserRole>();
userRoles.Add(fetchedUserRole);
return userRoles.Concat(myOwnUserRoleCollection);

如果另一方面Get返回USerRole的序列,则代码会更简单:

IEnumerable<UserRole> fetchedUserRoles = userRoleRepository.Get(...);
return fetchedUserRoles.Concat(myOwnUserRoleCollection);