使用 C# 将地点列表存储为具有城市名称的键值对

Store List of Places as Key Value pair with City name using C#

使用我的代码,我可以从维基百科文章中生成很多地名。假设如果我查找 Flensburg 维基百科页面,它将提供所有地点的外部页面链接作为名称。所以此时所有的地方都以列表形式显示在输出中,如

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

现在我想做的是,我想将所有这些地方与其城市名称配对存储。假设这里的 Flensburg 是城市名称。所以我想按以下方式存储它-

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);
                }

             }


        }

我想知道如何像我提到的那样存储我的数据。

根据您自己的标签,A Dictionary 将完全按照您的要求进行操作。

Dictionary<string, Object> cities = new Dictionary<string, Object>();
cities.Add(name, item);
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);
     }


}

这样做 -

var output = String.Join(";", obj );
Dictionary<cityname,List<associated places>> d = new Dictionary<cityname,List<associated places>>();

key 将是您搜索的城市名称,value 是一个包含所有关联地点的列表

使用字典的单个键将多个位置添加为列表中的值。