Conditional operator and Select in GridifyMapper
andvant opened this issue · 2 comments
andvant commented
Version
2.7.4
Details
Hi,
I'm having a problem with a GridifyMapper that has a conditional operator and Select method
Given this class structure:
public class Root
{
public int Id { get; set; }
public int? Blog1Id { get; set; }
public Blog Blog1 { get; set; }
public int? Blog2Id { get; set; }
public Blog Blog2 { get; set; }
}
public class Blog
{
public int Id { get; set; }
public ICollection<Post> Posts { get; set; }
}
public class Post
{
public int Id { get; set; }
public string Text { get; set; }
}
and this mapper:
var mapper = new GridifyMapper<Root>()
.AddMap("PostText", r => r.Blog1Id != null
? r.Blog1.Posts.Select(p => p.Text)
: r.Blog2.Posts.Select(p => p.Text));
when applying filtering:
var result = _context.Root.ApplyFiltering("PostText = Hello", mapper).ToList();
this exception is thrown:
Gridify.GridifyFilteringException: The 'Select' method on 'PostText' not found
at Gridify.Syntax.ExpressionToQueryConvertor.GenerateNestedExpression[T](IGridifyMapper`1 mapper, IGMap`1 gMap, ValueExpressionSyntax value, SyntaxNode op)
at Gridify.Syntax.ExpressionToQueryConvertor.ConvertBinaryExpressionSyntaxToQuery[T](BinaryExpressionSyntax binarySyntax, IGridifyMapper`1 mapper)
at Gridify.Syntax.ExpressionToQueryConvertor.GenerateQuery[T](ExpressionSyntax expression, IGridifyMapper`1 mapper, Boolean isParenthesisOpen)
at Gridify.GridifyExtensions.ApplyFiltering[T](IQueryable`1 query, String filter, IGridifyMapper`1 mapper)
Steps to reproduce
have a conditional operator ?: and .Select() in a GridifyMapper
alirezanet commented
fixed in v2.8.0
andvant commented
Awesome, thanks!