簡體   English   中英

具有Nullable的Convert.ChangeType錯誤<Int32>

[英]Error on Convert.ChangeType with Nullable<Int32>

我正在為數據庫查詢動態構建Lambda表達式(使用LINQ)。 我有一個用戶提供的字符串(例如“ 80”),我需要將該字符串與數據庫實體對象(例如Car.Mileage)中的字段進行比較。 當我嘗試構造比較表達式時,出現類型錯誤。

Car.Mileage聲明如下:

public Nullable<int> Mileage

我以這種方式建立查詢:

Nullable<int> userProvided = Int32.parse(arg);
Expression constant = Expression.Constant(userProvided);
Expression property = Expression.Property(car, "Mileage");
Expression exp = Expression.Equal(property, constant);

這會導致錯誤:

未為類型'System.Nullable'1 [System.Int32]'和'System.Int32'定義Expression.Equal。

我嘗試了幾種方法來轉換用戶的參數,但沒有成功。

  • Convert.ChangeType(constant,typeof(Car.Mileage))失敗,因為Mileage的類型為RuntimePropertyInfo。 來源
  • 我已經按照此處此處所述嘗試過Expression.Convert,但尚未使其正常工作。

找出答案,主要是通過重新閱讀這篇文章

我必須將Expression.Convert與屬性Expression的類型一起使用:

Expression.Equal(property, Expression.Convert(constant, ((MemberExpression)property).Type));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM