我有一个ParseUsers(localPlayers)的本地列表和ParseObject(remoteGame)中包含ParseUsers的列表。我想找到所有不包含本地ParseUsers列表中任何玩家的对象。
到目前为止,我尝试了三种不同的选项:
1:
ParseQuery<ParseGame> query = from remoteGame in new ParseQuery<ParseGame>()
where !remoteGame.Players.Any(x => localPlayers.Contains(x))
select remoteGame;
2:
ParseQuery<ParseGame> query = from remoteGame in new ParseQuery<ParseGame>()
where !remoteGame.Players.Intersect(localPlayers).Any()
select remoteGame;
3:
ParseQuery<ParseGame> query = from remoteGame in new ParseQuery<ParseGame>()
where !remoteGame.Players.Contains(localPlayers[0])
where !remoteGame.Players.Contains(localPlayers[1])
where !remoteGame.Players.Contains(localPlayers[2])
where !remoteGame.Players.Contains(localPlayers[3])
select remoteGame;
选项1和2给出一个例外,即不支持查询,而选项3给出一个例外,即查询不能对一个键有多个约束。
感谢你的帮助, HIG
答案 0 :(得分:1)
我认为这是你正在寻找的东西:
remoteGame.Players.Except(localPlayers)
答案 1 :(得分:0)
经过多次尝试,我找到了解决方案。我认为parse.com上的文档不太对。它说:
如果要检索与多个值中的任何一个都不匹配的对象,可以使用WhereNotContainedIn或者!包含LINQ查询,提供可接受值的列表。
但实际上,您无法在!包含Linq查询中提供可接受值的列表,而是单个值,而您可以使用WhereNotContainedIn提供可接受值的列表。
所以解决方案看起来像这样:
ParseQuery<ParseGame> query = from remoteGame in new ParseQuery<ParseGame>()
select remoteGame;
query = query.WhereNotContainedIn("Players", localPlayers);