我有以下lambda表達式的問題:C#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);
}
這是我的代碼,我想表達默認添加到我的生意。 注意:屬性EnableMark
和DeleteMark
是nullable<int>
。 當我調試,lambda表達式的表達式轉換到這一點:
{p => ((1 == 1) AndAlso ((p.DeleteMark != Convert(1)) AndAlso (p.EnableMark != Convert(0))))};
這導致了我的查詢拋出異常:
// use Dapper connection Query
var query = dbConnection.Query<T>(linq);
例外:無法識別的節點類型(轉換),
我想不通爲什麼lambda表達式給我Covnert(1)
和Convert(0)
,有什麼建議嗎?
我試圖將財產EnableMark
和DeleteMark
更改爲int
,而不是nullable<int>
,然後它的工作。但在其他情況下,nullable type
是必要的,有沒有解決方案或文件? 謝謝。
@Eric利珀特感謝您指出的原因,我設置的值的變量「1」,讓它的類型來int?
,並分配給DeleteMark。有效 !!
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);
}
是'var var param = query.ToJObject()'相關的問題?如果沒有,你可以刪除它們嗎? –
請取消註釋或刪除任何不應被視爲的代碼。 – ChiefTwoPencils