ich in einem Verfahren zur Herstellung einer Serviceklasse meiner Asp.Net MVC Anwendung dieser Balg Abfrage zur Verfügung gestellt:eine Liste von einem IOrderedQueryable durch ToList Verfahren von Linq Constructing
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);
Die Type
von „query“ Variable ist IOrderedQueryable
(nichtIOrderedQueryable<T>
) und ich kann Ausgabetyp meiner Methode zu IQueryable
auch ändern.
Mein Problem ist, wo ich versuche, diese Abfrage zu einem list
in meinem Controller zu konvertieren. Der Compiler schlägt mir vor, ToListAsync()
Methode zu verwenden. Warum kann ich ToList()
Methode hier nicht verwenden?
Auch soll ich erklären, dass, wenn ich die list
in meiner Service-Methode erstellen, wo die Abfrage zu erzeugen ich in der Lage sein ToList()
Methode zu verwenden, aber ich durfte den Ball IQueryable
oder IOrderedQueryable
nur an der Steuerung.
Sollte ich den Typ meiner Service-Methode ändern, die von IQueryable
oder IOrderedQueryable
auf andere Typen ausgegeben wird?
ändern Sie sollten in der Lage sein, 'ToList' zu verwenden, vermissen Sie irgendwelche Verweise auf LINQ vielleicht? –
Sie sollten die Signatur Ihrer Methode posten und wer sie anruft –