我有2个字符串数组,如果_authRole数组中存在任何数组,我想返回。怎么做的?
string[] _userRoles = userdata.Split(',');
string[] _authRoles = AuthRoles.Split(',');
bool isAuthorized = _authRoles.Any(_userRoles ??);
/ M
答案 0 :(得分:11)
如果您想要确定_authRoles
和_userRoles
是否至少有一个共同项目,请使用:
bool isAuthorized = _authRoles.Intersect(_userRoles).Any();
您还可以以您选择的任何其他方式查询Intersect
的结果。
答案 1 :(得分:7)
试试这个:
Boolean isAuthorized =
_userRoles.Any(user => _authRoles.Contains(user));
答案 2 :(得分:4)
假设列表的大小为N和M,并且可能的情况不匹配。安德鲁的解决方案是时间为O(NM),额外内存为O(1)。 Adam的解决方案是时间和记忆中的O(N + M),但可以更清楚地写成Jon的解决方案。
另一个与Adam和Jon基本相同的解决方案是加入两个列表:
var joined = from user in userRoles
join auth in authRoles
on user equals auth
select user;
return joined.Any();
这比重量要重一点,但它读得很好。 : - )