C# 4.0 代码优先的LINQKit谓词

C# 4.0 代码优先的LINQKit谓词,c#-4.0,ef-code-first,predicatebuilder,linqkit,C# 4.0,Ef Code First,Predicatebuilder,Linqkit,我读过这个() 这是我的密码: var predicateOuter = PredicateBuilder.True<T_Users>(); predicateOuter.And(d => d.code== 357); var count=tService.GetCount(predicateOuter.Expand()); var predicateOuter=PredicateBuilder.True(); 和(d=>d.code==357); var count=tSe

我读过这个()

这是我的密码:

var predicateOuter = PredicateBuilder.True<T_Users>();
predicateOuter.And(d => d.code== 357);
var count=tService.GetCount(predicateOuter.Expand());
var predicateOuter=PredicateBuilder.True();
和(d=>d.code==357);
var count=tService.GetCount(predicateOuter.Expand());
我的代码优先服务:

public int GetCountSearch(Expression<Func<T, bool>> exp)
{
    return _entities.Count(exp);
}
public int GetCountSearch(表达式exp)
{
返回实体计数(exp);
}
T_用户中的所有记录
:6548

所有记录,其中
code==357
:26


但它总是返回所有记录。但是为什么呢?

您需要使用添加的结果:

// Assign result here to predicateOuter -
predicateOuter = predicateOuter.And(d => d.code== 357);

// This should now function properly
var count = tService.GetCount(predicateOuter.Expand());

Add
不修改谓词,而是返回一个带有附加条件的新谓词。

您需要使用
Add
的结果:

// Assign result here to predicateOuter -
predicateOuter = predicateOuter.And(d => d.code== 357);

// This should now function properly
var count = tService.GetCount(predicateOuter.Expand());

Add
不修改谓词,而是返回一个带有附加条件的新谓词。

完全正确。非常感谢你。非常感谢你