C#Lambda表情翻译奇怪,有什么建议吗?

C#Lambda表情翻译奇怪,有什么建议吗?,c#,lambda,dapper,C#,Lambda,Dapper,我对以下lambda表达式有问题: public IEnumerable<ModuleEntity> GetPageList(Pagination pagi, string query) { var expression = LinqExpression.Default<ModuleEntity>(); expression = expression.And(e => e.DeleteMark != 1 &&

我对以下lambda表达式有问题:

public IEnumerable<ModuleEntity> GetPageList(Pagination pagi, string query)
{
    var expression = LinqExpression.Default<ModuleEntity>();
    expression = expression.And(e =>
       e.DeleteMark != 1 &&
       e.EnableMark != 0
    );

   return this.BaseRepository().GetList(expression, pagi);
}
这导致我的查询引发异常:

// use Dapper connection Query
var query = dbConnection.Query<T>(linq);
我不明白为什么lambda表达式给我Convert(1)和Convert(0)


正如您所注意到的,DeleteMark和EnableMark是可为空的整数。C#未定义整数和可为空整数之间的比较运算符。它确实定义了两个可为null的int之间的比较运算符,以及从int到可为null的int的转换。lambda转换捕获了这样一个事实,即整数1和0已被转换为可为null的整数,以便进行比较。

与该问题相关的是
var param=query.ToJObject()
?如果没有,您可以删除它们吗?请取消注释或删除任何不应该考虑的代码。谢谢您的回答,但如何改进它,在许多情况下,可空类型是必需的,在翻译之前不能直接转换它吗?
// use Dapper connection Query
var query = dbConnection.Query<T>(linq);
public IEnumerable<ModuleEntity> GetPageList(Pagination pagi, string query)
{
    var expression = LinqExpression.Default<ModuleEntity>();
    int? deleteMark = 1;
    int? enableMark = 0
    expression = expression.And(e =>
       e.DeleteMark != deleteMark &&
       e.EnableMark != enableMark
    );

   return this.BaseRepository().GetList(expression, pagi);
}