System.Linq.Dynamic.Core icon indicating copy to clipboard operation
System.Linq.Dynamic.Core copied to clipboard

Fail to `GroupBy->Select->Where->Average`

Open Cricle opened this issue 1 year ago • 3 comments

1. Description

Describe the issue or propose a feature.

2. Exception

public class DataSetA
{
    public string Name { get; set; }

    public int Id { get; set; }

    public DateTime Time { get; set; }

    public int? L { get; set; }
}

var ds = new DataSetA[0];
var q = ds.AsQueryable()
    .GroupBy("Time")
    .Select("new (Select(L).Where(it!=null).Average() as q)");//Error

var q1 = ds.GroupBy(x => x.Time)
    .Select(x => new { q = x.Select(d => d.L).Where(d => d != null).Average() });//Ok
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseEnumerable(Expression instance, Type elementType, String methodName, Int32 errorPos, Type type)
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseMemberAccess(Type type, Expression expression)
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParsePrimary()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseUnary()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseMultiplicative()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseAdditive()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseShiftOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseComparisonOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseLogicalAndOrOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseIn()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseAndOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseOrOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseLambdaOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseNullCoalescingOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseConditionalOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseNew()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseIdentifier()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParsePrimary()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseUnary()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseMultiplicative()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseAdditive()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseShiftOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseComparisonOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseLogicalAndOrOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseIn()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseAndOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseOrOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseLambdaOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseNullCoalescingOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.ParseConditionalOperator()
   在 System.Linq.Dynamic.Core.Parser.ExpressionParser.Parse(Type resultType, Boolean createParameterCtor)
   在 System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda(Type delegateType, ParsingConfig parsingConfig, Boolean createParameterCtor, ParameterExpression[] parameters, Type resultType, String expression, Object[] values)
   在 System.Linq.Dynamic.Core.DynamicQueryableExtensions.Select(IQueryable source, ParsingConfig config, String selector, Object[] args)

3. Fiddle or Project

4. Any further technical details

Cricle avatar Oct 15 '22 03:10 Cricle