CRi*_*ice 2 linq linq-to-objects join
使用类RoleRecord(Guid RoleId,string RoleName,...)我试图获取Name的新列表,其中RoleId匹配Guid列表
IEnumerable<RoleRecord> roles;
IEnumerable<Guid> roleIds;
Run Code Online (Sandbox Code Playgroud)
我正在考虑避免嵌套的for循环,并且遵循:
var query =
from rowA in roles
join rowB in roleIds
on rowA.RoleId equals rowB.????
select { rowA.RoleName };
Run Code Online (Sandbox Code Playgroud)
我试图将guid包装在一个类中,但是因为语法错误所以甚至无法构建它.有任何想法吗?谢谢
如果你有大量的Guids,我个人不会使用Jeremy的答案.如果您真正想要表达联接 - 您只需要:
var query = from rowA in roles
join rowB in roleIds on rowA.RoleId equals rowB
select rowA.RoleName;
Run Code Online (Sandbox Code Playgroud)
或者,首先创建一组角色ID:
HashSet<Guid> validRoleIds = new HashSet<Guid>(roleIds);
var query = from rowA in roles
where validRoleIds.Contains(rowA.RoleId)
select rowA.RoleName;
Run Code Online (Sandbox Code Playgroud)
优点是,您不需要对每个角色的每个有效角色ID进行线性搜索.如果您知道自己没有多个角色或角色ID,那么这不是问题,但通常哈希方法会更有效.
请注意,连接将在内部使用哈希.
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |