From 6839b9b980402417f9f2fea8b0ad3290135f915a Mon Sep 17 00:00:00 2001 From: Aleksey Martynov Date: Wed, 15 Feb 2017 19:16:13 +0300 Subject: [PATCH] Fix the bug --- .../DataSourceExpressionBuilderTests.cs | 11 +++++++++++ .../DataSourceExpressionBuilder.cs | 2 +- .../DataSourceLoadOptionsBase.cs | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/net/DevExtreme.AspNet.Data.Tests/DataSourceExpressionBuilderTests.cs b/net/DevExtreme.AspNet.Data.Tests/DataSourceExpressionBuilderTests.cs index 4d4e4723..89600e61 100644 --- a/net/DevExtreme.AspNet.Data.Tests/DataSourceExpressionBuilderTests.cs +++ b/net/DevExtreme.AspNet.Data.Tests/DataSourceExpressionBuilderTests.cs @@ -35,6 +35,17 @@ public void Build_Filter() { Assert.Equal("data.Where(obj => (obj > 123))", expr.Body.ToString()); } + [Fact] + public void Build_FilterAsEmptyList() { + // To mitigate cases like https://devexpress.com/issue=T483154 + + var builder = CreateBuilder(new SampleLoadOptions { + Filter = new object[0] + }); + + Assert.DoesNotContain(".Where", builder.BuildLoadExpr().ToString()); + } + [Fact] public void Build_CountQuery() { var builder = CreateBuilder(new SampleLoadOptions { diff --git a/net/DevExtreme.AspNet.Data/DataSourceExpressionBuilder.cs b/net/DevExtreme.AspNet.Data/DataSourceExpressionBuilder.cs index 2ee941a0..7a268eab 100644 --- a/net/DevExtreme.AspNet.Data/DataSourceExpressionBuilder.cs +++ b/net/DevExtreme.AspNet.Data/DataSourceExpressionBuilder.cs @@ -48,7 +48,7 @@ Expression BuildCore(ParameterExpression param, bool paginate = false, bool isCo Expression body = param; - if(_loadOptions.Filter != null) + if(_loadOptions.HasFilter) body = Expression.Call(queryableType, "Where", genericTypeArguments, body, new FilterExpressionCompiler(_guardNulls).Compile(_loadOptions.Filter)); if(!isCountQuery) { diff --git a/net/DevExtreme.AspNet.Data/DataSourceLoadOptionsBase.cs b/net/DevExtreme.AspNet.Data/DataSourceLoadOptionsBase.cs index e354de7a..e58dde01 100644 --- a/net/DevExtreme.AspNet.Data/DataSourceLoadOptionsBase.cs +++ b/net/DevExtreme.AspNet.Data/DataSourceLoadOptionsBase.cs @@ -28,6 +28,10 @@ public abstract class DataSourceLoadOptionsBase { internal bool UseQueryableOnce; #endif + internal bool HasFilter { + get { return Filter != null && Filter.Count > 0; } + } + internal bool HasGroups { get { return Group != null && Group.Length > 0; } }