首页 > 解决方案 > 为什么我得到列表的最后一个元素?

问题描述

这是获取请求

var destname = textBox1.Text;
var client1 = new RestClient("https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/autosuggest/v1.0/UK/GBP/en-GB/?query=" + destname);
var request1 = new RestRequest(Method.GET);
request1.AddHeader("x-rapidapi-key", "");
request1.AddHeader("x-rapidapi-host", "skyscanner-skyscanner-flight-search-v1.p.rapidapi.com");
IRestResponse response1 = client1.Execute(request1);
var results = JsonConvert.DeserializeObject<DestinationName>(response1.Content);

这是课程

  public partial class Place1
{
    public string PlaceId { get; set; }
    public string PlaceName { get; set; }
    public string CountryId { get; set; }
    public string RegionId { get; set; }
    public string CityId { get; set; }
    public string CountryName { get; set; }
}

public partial class DestinationName
{
  public List<Place1> Places { get; set; }
}

当我做下面的事情时,我应该得到 ES-sky,它是列表的第一个元素,但由于某种原因,它给了我列表的最后一个元素。

foreach (var a in results.Places)
{
  label1.Text = a.PlaceId;
}

这是清单

ES-sky
BCN-sky
ALC-sky
AGP-sky
MAD-sky
PMI-sky
IBZ-sky
TENE-sky
TFS-sky
TFN-sky

我将如何调整代码以使我的输出是 ES-sky 而不是 TFN-sky。

标签: c#jsonapiclass

解决方案


您正在遍历列表,每次将其写入“label1.Text”的值。使用 SingleOrDefault()/FirstOrDefault()。不要使用 foreach 循环。

例子:

var firstValue=results.Places.FirstOrDefault(); label1.Text = firstValue.PlaceId;


推荐阅读