2016-02-23 2 views
1

С помощью моего кода я могу создать много мест из статьи в Википедии. Предположим, что если я посмотрю страницу Википедии Фленсбурга, она даст все внешние ссылки на страницы мест как имя. Так что на данный момент все места отображаются на выходе в виде списка, какХраните список мест в виде пары ключевых значений с именем города с помощью C#

Maasbüll 
Bov Municipality 
Hürup 
Hürup(Amt) 
Kupfermühle 
.........and so on... 

Теперь то, что я хочу сделать, я хочу, чтобы хранить все эти места в паре с названием города. Предположим, здесь Фленсбург - название города. Поэтому я хочу, чтобы сохранить его как следующий ПУТЬ

Flensburg;Maasbüll;Bov Municipality;Hürup;Hürup(Amt);Kupfermühle.... so on.. 

Мой код для создания списка всех мест являются следующим образом-

using (var client = new HttpClient()) 
     { 
      var response = client.GetAsync("https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gspage=Flensburg&gslimit=500&gsprop=type|name|dim|country|region|globe&format=json").Result; 

      if (response.IsSuccessStatusCode) 
      { 

       var responseContent = response.Content; 

       string responseString = responseContent.ReadAsStringAsync().Result; 

       var obj = JsonConvert.DeserializeObject<RootObject>(responseString).query.geosearch.Select(a => a.title).ToList(); 

       foreach (var item in obj) 
       { 
        Console.WriteLine(item); 
       } 

      } 


     } 

Я хочу знать, как я могу хранить свои данные, как я уже говорил.

+0

@J ... Не могли бы вы охарактеризовать немного больше, как действовать дальше. Я очень разбираюсь в этом деле. Спасибо –

+0

Гарри, мой ответ решает вашу проблему? – Sakura

+0

@ Сакура: Большое спасибо, теперь он работает. И не могли бы вы удалить свой другой ответ. Потому что может быть, это сбивает с толку какой-то другой. Я добавил две строки под консольным выходом. Также добавьте эту строку в свой код. поскольку вопрос заключается в хранении данных в хранилище. Большое вам спасибо time.var output = query + ";" + города [запрос]; File.WriteAllText (@ "C: \ C# Visual Studio \ City.txt", вывод); –

ответ

2
using System.Collections.Generic; 

Код:

Dictionary<string, string> cities = new Dictionary<string, string>(); 
string query = "Flensburg"; 
using (var client = new HttpClient()) 
{ 
    var response = client.GetAsync("https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gspage=" + WebUtility.UrlEncode(query) + "&gslimit=500&gsprop=type|name|dim|country|region|globe&format=json").Result; 

    if (response.IsSuccessStatusCode) 
    { 

     var responseContent = response.Content; 

     string responseString = responseContent.ReadAsStringAsync().Result; 

     var obj = JsonConvert.DeserializeObject<RootObject>(responseString).query.geosearch.Select(a => a.title).ToList(); 

     List<string> places = new List<string>(); 
     foreach (var item in obj) 
     { 
      places.Add(item); 
     } 
     cities[query] = string.Join(";", places); 


     Console.WriteLine(query + ":" + cities[query]); 
     var output = query + ";" + cities[query]; 
     File.WriteAllText(@"C:\C# Visual Studio\City.txt", output); 
    } 


} 
+0

Ваш код показывает только название города в alist, а не имя места –

+0

Я пробовал ваш код. но после этого он дает название места и имя города. Как Масбюлл Фленсбург таким образом, и это продолжалось для всех мест. Но я хочу сохранить имя города сначала, а затем все места; основа. Это совершенно другое –

+0

Да, я изменил его, но он показывает результат как Фленсбург перед каждым именем palces и также как формат списка не в соответствии с моим ожидаемым результатом. есть 500 мест, и Фленсбург добавляется перед каждым местом. –

0

Согласно вашему собственному тегу, A Dictionary будет делать именно то, что вы хотите.

Dictionary<string, Object> cities = new Dictionary<string, Object>(); 
cities.Add(name, item); 
+0

Я бы настоятельно рекомендовал против использования нетипизированных объектов, как правило ... –

0

ли это -

var output = String.Join(";", obj); 
+0

Я пробовал свой код, и он объединяет все места с;. Не могли бы вы дать мне подсказки, как я могу добавить название города до этого –

+0

Я поставил объект insted объекта. Потому что, пытаясь с объектом, он не дает правильного ответа. Но после того, как вы поместили элемент, соединение сустава не сработает. Beforeach (var item in obj) { var output = String.Join (";", item); Console.WriteLine (выход); } –

+0

нет элемента 'City' в вашем' JSON' –

0
Dictionary<cityname,List<associated places>> d = new Dictionary<cityname,List<associated places>>(); 

ключ будет название города, который вы ищете, и значение представляет собой список, который содержит все ассоциированные места

Добавить несколько мест в виде значений в списке с помощью одного ключа словаря.

 Смежные вопросы

  • Нет связанных вопросов^_^