使用 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 是一个包含所有关联地点的列表
使用字典的单个键将多个位置添加为列表中的值。
使用我的代码,我可以从维基百科文章中生成很多地名。假设如果我查找 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 是一个包含所有关联地点的列表
使用字典的单个键将多个位置添加为列表中的值。