我有这个查询
var val = from user in allUsers where currentUserTeams.Contains(user.Teams) select user;
其中allusers
包含每个具有Teams
对象的用户,这是一个团队ID列表,currentUserTeams
包含团队ID列表。我使用上面的linq来查明是否有任何用户是currentuserteams团队id的团队的一部分,但似乎没有工作
答案 0 :(得分:2)
假设您有ID
作为团队ID属性,您可以使用Enumerable.Any<TSource> Method (IEnumerable<TSource>, Func<TSource, Boolean>)
检查序列中的任何元素是否满足条件。
var val = allUsers
.Where(u =>
u.Teams.Any(t => currentUserTeams.Any(c => c == t.Id)
)
.ToList();
答案 1 :(得分:0)
如果您的意思是:
,您的问题并不十分明确包含每个
user
和Teams
,其中team id
列表currentUserTeams
包含team id
列表。
和
我使用上面的linq来查明
user
是否属于团队的一部分currentuserteams
团队ID
1。两个列表都包含正方形Ids
,并且您要检查allUsers
的任何用户是否属于其中一个currentUserTeams
,那么你应该去:
var val = (from user in allUsers
where currentUserTeams.Any(curentUserTeamId=>user.Teams.Any(teamId=>teamId == curentUserTeamId)
select user).ToList();
或者
2。两个列表都包含Team
,并且您要检查allUsers
中是否有currentUserTeams
是其中一个var val = (from user in allUsers
where currentUserTeams.Any(curentUserTeam=>user.Teams.Any(team=>team.Id == curentUserTeam.Id)
Select).ToList();
的一部分,你应该去:
var memberList = new List<User>();
AllUsers.Foreach(user=>
{
user.Teams.Foreach(id=>
{
if(currentUserTeams.Contains(id)
{
memberList.Add(user);
Break; //Because you don't need to loop through the rest of the sequence
}
})
})
更新:使用Foreach:
{{1}}