我試圖建立必須創建類型的查詢凡() 對於IN如果值列表中存在我必須檢查的表達,所以我的表達是這樣的:極力打造拉姆達樹
long loKey = 2;
List<long> loKeys = new List<long>();
loKeys.Add(loKey);
ParameterExpression parameter = Expression.Parameter(type, "t");
var constantExpression = Expression.Constant((List<long>)loKeys, typeof(List<long>));
var lambda = Expression.Lambda(
typeof(Func<,>).MakeGenericType(type, typeof(bool)),
Expression.Equal(
Expression.Property(parameter, "ID"),
constantExpression
),
parameter
);
resultQuery = resultQuery.Provider.CreateQuery(
Expression.Call(
typeof(Queryable),
"Where",
new Type[] { type },
resultQuery.Expression,
lambda
)
);
這樣的想法是,field ID
必須存在於名單loKeys
,但我得到一個錯誤:
Additional information: The binary operator Equal is not defined for the types 'System.Int64' and 'System.Collections.Generic.List`1[System.Int64]'.
在Expression.Lambda - > MakeGenericType
何不'使用類似'query.Where(entity => keysEnumerable.Contains(entity.Id))'',其中'keysEnumerable'是'IEnumerable'? –
Dennis
因爲我的查詢沒有類型,所以我不能使用.Where –