2014-10-11 75 views
0

我有ParseUsers(localPlayers)的本地列表和我的ParseObject(remoteGame)中的ParseUsers列表。我想查找所有不包含本地ParseUser列表中的任何玩家的對象。需要一個查詢,其中列表不包含另一個列表的項目

直到現在我試過,沒有工作三個不同的選項:

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

大量嘗試,我已經找到了解決辦法之後。我認爲parse.com上的文檔並不完全正確。它說:

如果要檢索不匹配任何值的對象,可以使用WhereNotContainedIn或a!包含LINQ查詢,提供可接受值的列表。

但實際上,您不能在一個!中包含Linq查詢提供一個可接受值的列表,而不是一個值,而您可以使用WhereNotContainedIn提供可接受值的列表。

因此,解決辦法是這樣的:

ParseQuery<ParseGame> query = from remoteGame in new ParseQuery<ParseGame>() 
           select remoteGame; 
query = query.WhereNotContainedIn("Players", localPlayers); 
1

我認爲這是你在找什麼:

remoteGame.Players.Except(localPlayers) 
+0

謝謝,但不幸的是我不能在ParseQuery使用。 – 2014-10-11 18:13:40

+0

你能向我們展示ParseQuery類嗎? – 2014-10-11 18:40:40

+0

是的,但ParseQuery不是我自己的類。它來自Parse SDK(http://www.parse.com/docs/dotnet/api/html/T_Parse_ParseQuery_1.htm) – 2014-10-11 18:58:25

相關問題