complex query.
This commit is contained in:
parent
6fa59c3035
commit
babce13871
@ -142,33 +142,8 @@ namespace PoweredSoft.DynamicLinq.Helpers
|
|||||||
return lambda;
|
return lambda;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO special handling for collections.
|
|
||||||
if (IsEnumerable(memberExpression))
|
if (IsEnumerable(memberExpression))
|
||||||
{
|
{
|
||||||
/* //// first recursion.
|
|
||||||
//var typeOfClass = typeof(Author);
|
|
||||||
//var parameter = Expression.Parameter(typeOfClass, "t");
|
|
||||||
//var posts = Expression.PropertyOrField(parameter, "Posts");
|
|
||||||
|
|
||||||
//// second recursion
|
|
||||||
//{
|
|
||||||
// var subListType = posts.Type.GetGenericArguments().First();
|
|
||||||
|
|
||||||
// var innerParam = Expression.Parameter(subListType, "t2");
|
|
||||||
// var field = Expression.PropertyOrField(innerParam, "Title");
|
|
||||||
// var innerCondition = PoweredSoft.DynamicLinq.Helpers.QueryableHelpers.GetConditionExpressionForMember(innerParam, field, ConditionOperators.Equal, Expression.Constant("Match"));
|
|
||||||
// var lambda = Expression.Lambda(innerCondition, innerParam);
|
|
||||||
|
|
||||||
// // any
|
|
||||||
// var anyMethod = typeof(Enumerable).GetMethods(BindingFlags.Static | BindingFlags.Public).First(t => t.Name == "All" && t.GetParameters().Count() == 2);
|
|
||||||
// var genericAnyMethod = anyMethod.MakeGenericMethod(subListType);
|
|
||||||
// var subExpression = Expression.Call(genericAnyMethod, posts, lambda);
|
|
||||||
|
|
||||||
// var finalLambda = Expression.Lambda<Func<Author, bool>>(subExpression, parameter);
|
|
||||||
// query = query.Where(finalLambda);
|
|
||||||
//}
|
|
||||||
*/
|
|
||||||
|
|
||||||
var listGenericArgumentType = memberExpression.Type.GetGenericArguments().First();
|
var listGenericArgumentType = memberExpression.Type.GetGenericArguments().First();
|
||||||
var innerParameter = Expression.Parameter(listGenericArgumentType, $"t{++recursionStep}");
|
var innerParameter = Expression.Parameter(listGenericArgumentType, $"t{++recursionStep}");
|
||||||
var innerLambda = InternalCreateFilterExpression(recursionStep, listGenericArgumentType, innerParameter, innerParameter, parts.Skip(1).ToList(), condition, value, convertStrategy, collectionHandling);
|
var innerLambda = InternalCreateFilterExpression(recursionStep, listGenericArgumentType, innerParameter, innerParameter, parts.Skip(1).ToList(), condition, value, convertStrategy, collectionHandling);
|
||||||
|
Loading…
Reference in New Issue
Block a user