Frage

Ich bin der Facebook C # SDK in einer Leinwand App.

Wenn Sie diesen Code ausgeführt wird ...

public IEnumerable<string> GetFansIds(string pageId, IEnumerable<string> userIds)
{
    if (userIds.Count() == 0)
        return new List<string>();

    var fb = new FacebookApp();
    string query = String.Format("select uid from page_fan where uid IN ( {0} ) and page_id = {1}",
        String.Join(",", userIds),
        pageId
    );
    dynamic result = fb.Fql(query);
    return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();
}

ich die folgende Ausnahme erhalten:

RuntimeBinderException: Cannot perform runtime binding on a null reference

Der Code führt Folgendes aus:

  • Es führt eine FQL Abfrage einen JsonArray contaning JsonObject jeweils mit einer uid Property zu erhalten (mit dem uids der Nutzer, die nicht Fan von einiger Fanpage sind.

  • Das Select wandelt nur alle dynamischen Objekte in eine List<string>

Der FQL Teil funktioniert nur richtig, wie ich die Ergebnisse im Debugger sehen kann. Das Problem ist, mit dem Select, dass ich nicht machen kann es funktionieren.

Wie kann ich fix das dynamische Lambda ??? (Bitte erzählen Sie mir nicht nur ein foreach zu verwenden, das ist, was ich zur Zeit gerade jetzt tue)

War es hilfreich?

Lösung

The problem is that extension methods cannot be used on dynamic objects. Cast the result of the query to a JsonArray and then you can use linq expressions on the JsonArray.

var result = (JsonArray)fb.Fql(query);
return result.Select((Func<dynamic, string>)(x => x.uid)).ToList();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top