无法将类型Void转换为泛型列表

本文关键字:泛型 列表 转换 Void 类型 | 更新日期: 2023-09-27 17:59:54

我有两个列表:国家列表和工作列表

public List<Countries> getSharedCountries(string brandName)
    {
        var items = SharedJobs.Where(a => a.BrandName == brandName);
        var items2 = items.OrderBy(a => a.CountryCode);
        Countries = new List<Countries>();
        string Country = null;
        foreach (var item in items2)
        {
            if (Country != item.CountryCode)
            {
                Country = item.CountryCode;
                Countries.Add(new Countries() { CountryCode = item.CountryCode, JobIDs = getSharedJob(item.CountryCode) });
            }
        }
        return Countries;
    }
    public void getSharedJob(string Country)
    {
        var items = SharedJobs.Where(a => a.CountryCode == Country);
        JobNetDetails = new List<JobDetail>();
        CareerBoardDetails = new List<JobDetail>();
        JobSharkDetails = new List<JobDetail>();
        JobServeDetails = new List<JobDetail>();
        int AusCount = 0;
        foreach (var item in items)
        {
            if (Country == "AUS")
            {
                AusCount++;
                if (AusCount % 4 == 0)
                {
                    JobNetDetails.Add(new JobDetail() { JobPageTitle = item.JobPageTitle, JobID = item.JobID, JobUrl = item.JobUrl });
                }
                else
                {
                    JobServeDetails.Add(new JobDetail() { JobPageTitle = item.JobPageTitle, JobID = item.JobID, JobUrl = item.JobUrl });
                }
            }
        }
    }

在我访问方法getSharedJob的行上,它出错并给了我错误,不能隐式地将void转换为system.generic.List?

我很困惑为什么会发生这种事?

无法将类型Void转换为泛型列表

正如方法的签名所说,public void getSharedJob(string Country)是无效的,所以它不会返回任何内容,您应该更改它并返回您想要的列表。

编辑:正如我在评论中所读到的,你需要返回4个列表。你有几个选择:

  • 您可以返回列表的数组
  • 您可以返回列表列表
  • 您可以返回包含4个列表的自己的类

试试下面的代码,它从您调用的方法返回jobDetails

 public List<Countries> getSharedCountries(string brandName)
            {
                var items = SharedJobs.Where(a => a.BrandName == brandName);
                var items2 = items.OrderBy(a => a.CountryCode);
                Countries = new List<Countries>();
                string Country = null;
                foreach (var item in items2)
                {
                    if (Country != item.CountryCode)
                    {
                        Country = item.CountryCode;
                        foreach (var jobDetail in getSharedJob(item.CountryCode))
                        {
                           Countries.Add(new Countries() { CountryCode = item.CountryCode, JobIDs = jobDetail.JobID });
                         }
                    }
                }
                return Countries;
            }
            public List<JobDetail> getSharedJob(string Country)
            {
                var items = SharedJobs.Where(a => a.CountryCode == Country);
                JobNetDetails = new List<JobDetail>();
                CareerBoardDetails = new List<JobDetail>();
                JobSharkDetails = new List<JobDetail>();
                JobServeDetails = new List<JobDetail>();
                int AusCount = 0;
                foreach (var item in items)
                {
                    if (Country == "AUS")
                    {
                        AusCount++;
                        if (AusCount % 4 == 0)
                        {
                            JobNetDetails.Add(new JobDetail() { JobPageTitle = item.JobPageTitle, JobID = item.JobID, JobUrl = item.JobUrl });
                        }
                        else
                        {
                            JobServeDetails.Add(new JobDetail() { JobPageTitle = item.JobPageTitle, JobID = item.JobID, JobUrl = item.JobUrl });
                        }
                    }
                }
              return JobServeDetails;
            }

您的方法签名表示接受一个字符串变量,不返回任何内容(void)。

public void getSharedJob(string country)

JobID需要一个值

JobIDs = getSharedJob(item.CountryCode)

所以你需要返回一个与JobID类型匹配的值,我认为它是一个int列表或JobDetails列表。