2011-06-30 7 views
2
public class Response 
     { 
      public User[] Users { get; set; } 
     } 
     public class User 
     { 
      public string Uid { get; set; } 
      public string First_Name { get; set; } 
      public string Last_Name { get; set; } 
      public int Online { get; set; } 
      public int[] Lists { get; set; } 
     } 

     private void c_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      lock (this) 
      { 
       string json = e.Result; 
       // var response = JsonConvert.DeserializeObject(json); 
       var response = JObject.Parse(json); 
       // var COUNT = JsonConvert.DeserializeObject<List<User>>(json); 
       // MessageBox.Show(response.ToString()); 

       var getcount = response["response"].Children<JObject>(); 
       int count_friends=getcount.Cast<JToken>().Values("uid").Count(); 
       Response rr = new Response(); 
       for (int i = 0; i <count_friends; i++) { 
        //rr.Users.ToDictionary(rr.Users[i].Uid => response["response"][i]["uid"].ToString()); 
       // rr.Users[i].First_Name = response["response"][i]["first_name"].ToString(); --DOESN'T WORKS 
        // Debug.WriteLine("OUT: "+(string)response["response"][i]["uid"].ToString()); 
        //Debug.WriteLine("OUT: " + COUNT.Count()); 

       } 
       Debug.WriteLine(rr.Users.ToString()); 
       // string[] names = rr.Users.Select(d => d.First_Name).ToArray(); 

       // string[] uids = response.Users.Select(d => d.Uid).ToArray(); 
       // Dictionary<string,string> users = response.Users.ToDictionary(d => d.First_Name); 
       // Dictionary<string, string> usersById = response.Users.ToDictionary(d => d.Uid, d => d.First_Name); 
      } 
     } 

は、私が「select from Response.User all where Online==1」 のような辞書にしかし、私は上記のクラスでDB(LINQ)を作成することができますどのようにスタートでアクセスもを取得する必要がありますか? response["response"][i]["uid"],response["response"][i]["first_name"]に保存されているすべての値...

答えて

0
public struct User { 
      public int Uid; 
      public string First_Name; 
      public string Last_Name; 
      public bool isonline; 
     } 

を思い付く問題を試してみて、再考され、あなたが

   User[] usr= new User[count_friends]; 
       // Response rr = new Response(); 
       for (int i = 0; i <count_friends; i++) { 
        usr[i].Uid =(int) response["response"][i]["uid"]; 
1

これはあなたの探しているものですか?

Dictionary<string,List<Dictionary<string,object>>> 

これは、悪いデザインを変え、よりよい解決策

+0

のような値を書き込むことができるよりも、私はそれを使用することができますどのように?私はどのように....... 私はSQL言語のようなデータを取得したい "Response.Userすべてのオンライン== 1"から選択し、 "レスポンス["レスポンス "] [i] ["uid"] Response.Users [i] " – SevenDays

+0

データベースを作成するクラスと同じ構造体で、それらをlinqにSQLファイル(.dbml)に追加します。 – harryovers

+0

//動作しません。どうすればいいですか?私は 'rr.User.ToDictionary(add_uid [i] => FROM_response [" response "] [i] [" uid "])' – SevenDays