我建立一個LINQ表達式在C#這樣的:LINQ表達式增加不必要的括號
public static Expression BuildEqualsExpression(
ParameterExpression Parameter,
PropertyInfo Property,
ConstantExpression constant)
{
Expression propertyExpression = Expression.Property(Parameter, Property);
return Expression.Equal(propertyExpression, constant);
}
返回的表達是
(r.Property == constant)
當我要的是
r.Property == constant
沒有括號。我的IQueryProvider
並沒有平等對待這兩個陳述。有誰知道我如何擺脫括號?
如果我AND
其中兩個在一起,我得到
((r.Property1 == constant) And (r.Property2 == constant))
時,我想
r.Property1 == constant And r.Property2 == constant
,因爲它們是不等價的謂詞。
編輯:
感謝您的幫助。事實證明,在SQL服務器2014年,使用這個命令:
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY
當實際的行數爲100 <,這將導致查詢極爲緩慢執行。
這只是表達的字符串表示,它不會改變它的意義。是的,這兩個謂詞*是等價的。你的IQueryProvider是否在字符串表示上工作? –
我的IQueryProvider的後備存儲不會將這些等價處理。我不需要括號。儘管在數學上它們是等價的,但支持商店將括號視爲特定操作= \ – Magn3s1um
@ Magn3s1um:在所有應有的尊重下,這是沒有意義的。那麼括號表示什麼操作? –