我在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版本中添加?
答案 0 :(得分: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);
答案 1 :(得分: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
享受!