创建一个IEnumerable类

本文关键字:一个 IEnumerable 创建 | 更新日期: 2023-09-27 18:11:07

我有以下类

namespace TaxiResults.Model
{
public class SearchResult
{
    public string status { get; set; }
    public SearchResultResult result { get; set; }
}
public class SearchResultResult
{
    public SearchResultOffer offer { get; set; }
}
public class SearchResultOffer
{
    public SearchResultOffer1[] offers { get; set; }
}
public class SearchResultOffer1
{
    public SearchResultAddress[] addresses { get; set; }
    public string chnl { get; set; }
    public string companyInfoId { get; set; }
    public string companyName { get; set; }
    public string bookingId { get; set; }
    public string tz { get; set; }
    public string pickupDateTime { get; set; }
    public string pickupDateTimeUTC { get; set; }
    public int routeDuration { get; set; }
    public int routeDistance { get; set; }
    public SearchResultPricedetail priceDetail { get; set; }
    public float tax { get; set; }
    public string services { get; set; }
    public int bagCount { get; set; }
    public int passengerCount { get; set; }
    public int productType { get; set; }
    public string resultset { get; set; }
    public string companyInfoId3cd { get; set; }
}
public class SearchResultPricedetail
{
    public SearchResultOriginalprice originalPrice { get; set; }
    public SearchResultFinalprice finalPrice { get; set; }
}
public class SearchResultOriginalprice
{
    public SearchResultAmount[] amounts { get; set; }
}
public class SearchResultAmount
{
    public string currency { get; set; }
    public string priceExcludingTax { get; set; }
    public float priceExcludingTaxNumber { get; set; }
    public string priceTotal { get; set; }
    public float priceTotalNumber { get; set; }
    public float exchangeRate { get; set; }
    public string priceTax { get; set; }
    public float priceTaxNumber { get; set; }
}
public class SearchResultFinalprice
{
    public SearchResultAmount1[] amounts { get; set; }
}
public class SearchResultAmount1
{
    public string currency { get; set; }
    public string priceExcludingTax { get; set; }
    public float priceExcludingTaxNumber { get; set; }
    public double priceTotal { get; set; }
    public float priceTotalNumber { get; set; }
    public float exchangeRate { get; set; }
    public string priceTax { get; set; }
    public float priceTaxNumber { get; set; }
}
public class SearchResultAddress
{
    public SearchResultLocation location { get; set; }
    public string address { get; set; }
    public int type { get; set; }
}
public class SearchResultLocation
{
    public float lat { get; set; }
    public float lng { get; set; }
}
}

,我想做一个foreach循环上的Taxi.Model.SearchResult馈送到模型我在我的MVC视图返回。

但是我得到错误:

foreach语句不能操作Taxi.Model类型的变量。搜索结果"因为"出租车。模型。"搜索结果"不包含"GetEnumerator"的公共定义

我新的c#.net谁能告诉我我需要做什么,使我能做一个foreach请?

谢谢

创建一个IEnumerable类

最简单的方法就是枚举offers属性,像这样:

SearchResultOffer searchResults = ...
foreach(var result in searchResults.offers)
{
    ...
}

但是为了能够枚举SearchResultOffer本身,您必须实现IEnumerable接口:

public class SearchResultOffer : IEnumerable<SearchResultOffer1>
{
    public SearchResultOffer1[] offers { get; set; }
    // Generic version for IEnumerable<T>
    public IEnumerator<SearchResultOffer1> GetEnumerator() 
    {
        return offers.Cast<SearchResultOffer1>().GetEnumerator();
    }
    // Non-generic version for IEnumerable
    IEnumerator IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator(); // calls the generic version
    }
}

然后你可以这样做:

SearchResultOffer searchResults = ...
foreach(var result in searchResults)
{
    ...
}

查看您提供的代码,看起来SearchResult类实际上是底层实体的单个实例,而不是集合。您可能想要声明List<SearchResult>来存储所有结果,然后在该列表中使用foreach

您应该实现IEnumerable<T>IEnumerable来支持foreach。