C# 用linq的ToList方法从一个IOrderedQueryable构造一个列表
我在Asp.Net MVC应用程序的服务类的方法中提供了以下查询: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
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。非常感谢你的评论。