0

古い 3.0 バージョンの C# Facebook SDK から新しい 5.3.2 バージョンにいくつかのレガシー コードを更新しています。

http://developers.facebook.com/docs/reference/fql/ では、次のようなマルチクエリを実行できることが示されています

"query1":"SELECT uid, rsvp_status FROM event_member WHERE eid=12345678"
"query2":"SELECT name, url, pic FROM profile WHERE id IN (SELECT uid FROM #query1)"

古い API では、各クエリがその名前とペアになっている Dictionary しかありませんでした。

"page_admin_list","SELECT uid, page_id, type FROM page_admin where uid = 1234567890"
"permissions_response","SELECT uid, read_stream, status_update, photo_upload, publish_stream, offline_access FROM permissions WHERE uid IN (SELECT page_id FROM #page_admin_list)"

それぞれの例で、ネストされたクエリの # に注目してください。ただし、パラメーターとして string[] しか受け入れないため、新しい構文でこれを実現する方法がわかりません。

4

2 に答える 2

0

この回答が見つかりました(編集これは以前のバージョンのSDKに適用されます。バージョン6以降については、prabirの回答を参照してください):各クエリを#query0、#query1などで参照する必要があります...

または、Query()メソッドではなくGet()メソッドを使用できます

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-11-22T22:18:47.447 に答える
0

Facebook C# SDK v6 以降では、次のメソッドを使用して名前付きクエリを実行できます。

var fb = new FacebookClient("access_token");
dynamic result = fb.Get("fql",
    new
        {
            q = new
            {
                id = "SELECT uid from user where uid=me()",
                name = "SELECT name FROM user WHERE uid IN (SELECT uid FROM #id)",
            }
        });
于 2012-02-20T14:48:56.750 に答える