2012-05-30 3 views
4

친구 체크섬을 받으려면 멀티 쿼리를 사용하고 있습니다. 예상대로 데이터를 반환하는 쿼리가 있지만 원하는 각 쿼리에서 요소가 들어있는 DataTable을 만드는 것입니다. 나는 단지 3 개의 결과를 보여 주지만 적어도 100 개의 데이터가 있습니다. 내 루프가 올바르지 않다는 것 외에 내가 뭘 잘못하고 있는지 잘 모르겠다. 아이러니하게도, 그렇지 않은지, 3은 쿼리 수입니다. 나는 그것이 나의 foreach이지만 나는 내가 무엇을 반복해야하는지 확신하지 못한다. 도와주세요.Facebook C#에서 멀티 쿼리 결과 사용

dynamic resultCheckins = fb.Get("fql", 
    new 
    { 
     q = new 
     { 
      friends_checkins = "SELECT author_uid, coords, timestamp, page_id, message FROM checkin WHERE author_uid IN (SELECT uid2 FROM friend WHERE uid1 = me())", 
      users = "SELECT uid, name, pic_small from user where uid IN (SELECT author_uid FROM #friends_checkins)", 
      resultCheckins = "SELECT page_id, name, description from place where page_id IN (SELECT page_id FROM #friends_checkins)", 
     } 
    }); 

JObject resultCheckinsJson = JObject.Parse(resultCheckins.ToString()); 
DataTable CheckIn = new DataTable(); 
CheckIn.Columns.Add(new DataColumn("Friend", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("Picture", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("Link", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("Place", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("Coords", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("When", typeof(string))); 
CheckIn.Columns.Add(new DataColumn("Message", typeof(string))); 

int thiscounter = 0; 
foreach (var row in resultCheckinsJson["data"].Children()) 
{ 
    string placename = resultCheckins.data[1].fql_result_set[thiscounter].name.ToString().Replace("\"", ""); 
    string NavigateURL = "http://facebook.com/" + resultCheckins.data[1].fql_result_set[thiscounter].page_id.ToString().Replace("\"", ""); 

    DataRow CheckInRow = CheckIn.NewRow(); 
    CheckInRow["Friend"] = resultCheckins.data[2].fql_result_set[thiscounter].name; 
    CheckInRow["Picture"] = resultCheckins.data[2].fql_result_set[thiscounter].pic_small; 
    CheckInRow["Link"] = ResolveUrl(NavigateURL); 
    CheckInRow["Place"] = resultCheckins.data[1].fql_result_set[thiscounter].name.ToString().Replace("\"", ""); 
    CheckInRow["Coords"] = resultCheckins.data[0].fql_result_set[thiscounter].coords.ToString().Replace("\"", ""); 
    DateTime dtDateTime = dtDateTime.AddSeconds(resultCheckins.data[0].fql_result_set[thiscounter].timestamp).ToLocalTime(); 
    CheckInRow["When"] = dtDateTime.ToString(); 
    CheckInRow["Message"] = resultCheckins.data[0].fql_result_set[thiscounter].message.ToString(); 
    CheckIn.Rows.Add(CheckInRow); 
    thiscounter++; 
} 
+0

나는 페이스 북 AP와 함께 일한 적이 없다. 나,하지만 다음 질문에있는 사람은 다른 논리로 결과를 가져 왔습니다 (나는 그에게 내 대답도 도왔습니다). 그것을 확인해주십시오. http://stackoverflow.com/questions/11623714/convert-fql-results-to-custom-class/11624318#11624318 –

+0

돌아 오는 JSon을 게시 할 수 있습니까? (개인 정보가 난독 화되거나 코스 :-)). 질문에 대답하는 데 도움이 될 것입니다 ... –

답변

0

한번에 변경이 라인 :

foreach (var row in resultCheckinsJson["data"].Children()) 

사람 :

foreach는 (resultCheckinsJson.data 동적 행)

는 다음과 같은 특성을 얻을 :

row.name