1

我在 c# SDK 中有以下问题:当我尝试在我的桌面应用程序中使用以下字符串运行多查询(搜索共同朋友的 ID 对)时,我收到解析器错误:

string strCommonFriendsQuery = "{
        \"user_friends\":\"SELECT uid2 FROM friend WHERE uid1 = me()\", 
        \"mutual_friends\":\"SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM   #user_friends) AND uid2 IN (SELECT uid2 FROM #user_friends)\"
        }";

        fb.Query(strCommonFriendsQuery);

解析器错误:位置 0 处出现意外的“{”。

如果我将其粘贴到http://developers.facebook.com/docs/reference/rest/fql.multiquery/ 但不在 http://developers.facebook.com中,则相同的字符串(引号前没有转义序列)有效 /docs/reference/rest/fql.query/ 所以问题是我需要将它作为多查询而不是作为查询启动 - 现在我想问的是:

是否可以使用 SDK 的Facebook.FacebookClient.Query函数以某种方式处理多查询,还是我必须编写一个函数来做到这一点?据我了解,我唯一需要更改的是它连接到的地址。如果是这样,是否可以在下一个 SDK 版本中添加?

4

2 回答 2

2

这是firepol的答案的替代方案,带有命名查询:

var queries = 
    new Dictionary<string, object>
    {
        { "FamDamly", "select uid from family where profile_id = me()" },
        { "FamDetails", "select uid, first_name from user where uid in #FamDamly" }
    };
client.Get(queries);
于 2011-05-13T05:29:42.457 回答
1

要使用第一个查询(例如问题中的查询)进行多查询,请执行以下操作:

//note: queries begin from 0, not from 1
string query0 = "SELECT uid2 FROM friend WHERE uid1 = me()";
string query1 = "SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM #query0) AND uid2 IN (SELECT uid2 FROM #query0)";

dynamic result = fb.Query(query0, query1);

为了回答这个问题,我从这里得到了启发(必须弄清楚查询是从 0 开始的):How to use fql.multiquery with C# SDK

享受!

于 2011-05-02T06:34:59.157 回答