Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用linq的ToList方法从一个IOrderedQueryable构造一个列表_C#_Asp.net_Linq_Service - Fatal编程技术网

C# 用linq的ToList方法从一个IOrderedQueryable构造一个列表

C# 用linq的ToList方法从一个IOrderedQueryable构造一个列表,c#,asp.net,linq,service,C#,Asp.net,Linq,Service,我在Asp.Net MVC应用程序的服务类的方法中提供了以下查询: var query = (from company in _companyRepository.DbSet() join ct in _companyTagRepository.DbSet() on company.CompanyID equals ct.CompanyID into cct from companyTa

我在Asp.Net MVC应用程序的服务类的方法中提供了以下查询:

var query =
            (from company in _companyRepository.DbSet()
             join ct in _companyTagRepository.DbSet()
                 on company.CompanyID equals ct.CompanyID into cct
             from companyTag in cct.DefaultIfEmpty()
             where
                 filterItem.SelectedCompanyId.HasValue ? (company.CompanyID == filterItem.SelectedCompanyId.Value && company.CompanyStatusID == (int)Common.Enums.Status.Active) :
                 ((!filterItem.SelectedIndustries.Any() ||
                  filterItem.SelectedIndustries.Contains(companyTag.TagID.Value)) && company.CompanyStatusID == (int)Common.Enums.Status.Active &&
                 (companyTag != null && targetTagCategories.Contains(companyTag.Tag.TagCategoryID)))
             orderby company.CompanyID
             select new
             {
                 Id = company.CompanyID,
                 Title = company.CompanyFaName,
                 TitleEn = company.CompanyEnName,
                 CompanyBrands = !string.IsNullOrEmpty(company.CompanyFaName) ? company.CompanyFaBrands : company.CompanyEnBarnds,
                 CompanyProductsOrServicesFa = company.CompanyFaProductsOrServices,
                 CompanyProductsOrServicesEn = company.CompanyEnProductsOrServices,
                 WebSite = company.WebsiteAddress,
                 CompanyIcon = company.BackgroundImage,
                 company.CompanyTags
             })
            .GroupBy(company => new
            {
                company.Id,
                company.Title,
                company.TitleEn,
                company.CompanyBrands,
                company.CompanyProductsOrServicesFa,
                company.CompanyProductsOrServicesEn,
                company.WebSite,
            }, result => new
            {
                Tags = result.CompanyTags.Select(s => new
                {
                    CategryId = s.Tag.TagCategoryID,
                    Title = !string.IsNullOrEmpty(s.Company.CompanyFaName) ? s.Tag.TagFaName : s.Tag.TagEnName
                })
            })
            .OrderByDescending(o => o.Key.Id);
“query”变量的
Type
IOrderedQueryable
,我也可以将方法的输出类型更改为
IQueryable

我的问题是,我试图将此查询转换为控制器中的
列表。编译器建议我使用
ToListAsync()
方法。为什么我不能在这里使用
ToList()
方法

另外,我应该解释,如果我在我的服务方法中创建
列表
,在哪里生成该查询,我将能够使用
ToList()
方法,但我只允许将
IQueryable
IOrderedQueryable
传递给控制器


我是否应该将服务方法输出的类型从
IQueryable
IOrderedQueryable
更改为其他类型?

我找到了解决方案。我必须将方法输出类型从
IOrderedQueryable
更改为
IOrderedQueryable

我找到了解决方案。我必须将方法输出类型从
IOrderedQueryable
更改为
IOrderedQueryable

您应该能够使用
ToList
,您是否缺少对LINQ的任何引用?您应该发布您方法的签名以及调用它的人您应该能够使用
ToList
,您是否遗漏了对LINQ的任何引用?您应该发布您的方法的签名以及调用它的人。我也有同样的问题,但通过使用动态响应,即使响应是IOrderedQueryable,它也不起作用,然后我只是将动态替换为IOrderedQueryable,它工作得很好。谢谢欢迎你@Abel Valdez。非常感谢你的评论。我也有同样的问题,但是通过使用动态响应,即使响应是IOrderedQueryable,也不起作用,然后我只是将动态替换为IOrderedQueryable,它工作得很好。谢谢欢迎你@Abel Valdez。非常感谢你的评论。