grid configuration
OnRead="@Service.ReadComponents"
TItem="@ComponentModel"
Resizable="true"
SelectionMode="GridSelectionMode.Single"
FilterMode="@GridFilterMode.FilterMenu"
EditMode="@GridEditMode.Inline"
Height="100%"
Pageable="true"
Sortable="true"
Groupable="false"
SortMode="@SortMode.Single"
@bind-Page="@Service.GridPageIndex"
PageSize="@Service.GridPageSize"
PageSizeChanged="@Service.PagerPageSizeChanged"
OnUpdate="@Service.UpdateComponentAsync"
OnCreate="@Service.CreateComponentAsync"
@ref="@Grid" >
if use grid filter, the server-side query is completed successfully:
"skip": 0,
"page": 1,
"pageSize": 20000,
"sorts": [],
"filters": [
{
"logicalOperator": 0,
"filterDescriptors": [
{
"member": "VersionName",
"operator": 8,
"value": "test"
}
]
}
],
"groups": [],
"aggregates": [],
"groupPaging": falseif try to use the search:
"skip": 0,
"page": 1,
"pageSize": 20000,
"sorts": [],
"filters": [
{
"logicalOperator": 1,
"filterDescriptors": [
{
"member": "ProductName",
"operator": 8,
"value": "test"
},...
"member": "LabHourlyRateCurrency.Value",
"operator": 8,
"value": "test"
}
]
}
],
"groups": [],
"aggregates": [],
"groupPaging": falseit leads to
The LINQ expression 'DbSet() .Join( inner: DbSet(), outerKeySelector: s => EF.Property(s, "VersionId"), innerKeySelector: p => EF.Property(p, "Id"), resultSelector: (o, i) => new TransparentIdentifier( Outer = o, Inner = i )) .Join( inner: DbSet(), outerKeySelector: s => EF.Property(s.Inner, "ProductId"), innerKeySelector: p0 => EF.Property(p0, "Id"), resultSelector: (o, i) => new TransparentIdentifier, Product>( Outer = o, Inner = i )) .Join( inner: DbSet(), outerKeySelector: s => EF.Property(s.Outer.Outer, "JurisdictionId"), innerKeySelector: a => EF.Property(a, "Id"), resultSelector: (o, i) => new TransparentIdentifier, Product>, ApprovalJurisdiction>( Outer = o, Inner = i )) .OrderBy(s => s.Outer.Inner.Name) .ThenBy(s => s.Outer.Outer.Inner.Version) .ThenBy(s => s.Inner.Name) .Where(s => s.Outer.Inner.Name.ToLower().Contains("2 card") && s.Outer.Outer.Inner.Version.ToLower().Contains("2 card") && s.Outer.Inner.Name.ToLower().Contains("test1") || s.Outer.Outer.Inner.Version.ToLower().Contains("test1") || s.Inner.Name.ToLower().Contains("test1") || s.Outer.Outer.Outer.FileApprovalNumber.ToLower().Contains("test1") || new ProductSubmissionCostModel{ SubmissionId = s.Outer.Outer.Outer.Id, ProductId = s.Outer.Outer.Inner.ProductId, ProductName = s.Outer.Inner.Name, VersionName = s.Outer.Outer.Inner.Version, Jurisdiction = s.Inner.Name, SubmissionDate = s.Outer.Outer.Outer.DateSubmission, FileApprovalNumber = s.Outer.Outer.Outer.FileApprovalNumber } .InvoiceNumber.ToLower().Contains("test1") || new ProductSubmissionCostModel{ SubmissionId = s.Outer.Outer.Outer.Id, ProductId = s.Outer.Outer.Inner.ProductId, ProductName = s.Outer.Inner.Name, VersionName = s.Outer.Outer.Inner.Version, Jurisdiction = s.Inner.Name, SubmissionDate = s.Outer.Outer.Outer.DateSubmission, FileApprovalNumber = s.Outer.Outer.Outer.FileApprovalNumber } .ChargeType.ToLower().Contains("test1") || new ProductSubmissionCostModel{ SubmissionId = s.Outer.Outer.Outer.Id, ProductId = s.Outer.Outer.Inner.ProductId, ProductName = s.Outer.Inner.Name, VersionName = s.Outer.Outer.Inner.Version, Jurisdiction = s.Inner.Name, SubmissionDate = s.Outer.Outer.Outer.DateSubmission, FileApprovalNumber = s.Outer.Outer.Outer.FileApprovalNumber } .LabHourlyRateCurrency.Value.ToLower().Contains("test1"))' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. Seeserver code:
var result = await _mapper.ProjectTo<ComponentModel>(
_corpDbContext.Component
.Include(_ => _.Function))
.OrderBy(_=>_.ComponentIdentifier)
.ToDataSourceResultAsync(request.DataSourceRequest);
return new DataEnvelope<ComponentModel>()
{
Data = result.Data.Cast<ComponentModel>().ToList(),
Total = result.Total
};server Telerik.DataSource version 2.1.1