我使用Linq來獲取以下例外數據集「System.InvalidCastException:指定的轉換無效」。Linq To數據集錯誤System.InvalidCastException:指定的轉換無效
問題如下我的模型有兩個int類型的值。數據庫中的值不是必需的,所以有些字段爲空。我已將表讀入數據集,現在我需要使用以下代碼查詢數據集。
//model
public class Model
{
// Public Properties
...
...
...
public int? YearBegin { get; set; }
public int? YearEnd { get; set; }
}
//query
var list = from m in data.Tables["Models"].AsEnumerable()
select new Model
{
// rest of members omitted to simplify
YearBegin = m.Field<int>("YearBegin"),
YearEnd = m.Field<int>("YearEnd")
};
我曾嘗試以下沒有工作過:
m.Field<int?>("YearBegin")
YearEnd = m.IsNull("YearEnd") ? null, m.Field<int>("YearEnd")
有沒有檢查該字段有()類似String.IsNullOrEmpty值的另一種方式。 使用string類型的可能性也不大......
感謝
什麼發生在您嘗試'YearBegin = m.Field(「YearBegin」)'?你有沒有得到同樣的錯誤? –
Rondel
是的同樣的錯誤。 m.IsNull(「YearEnd」)似乎也一直都是正確的。 – user655261
儘管您的模型可能將字段設置爲int,但是列類型的基礎數據庫是什麼?無效的轉換可能是因爲您試圖轉換不兼容的類型(如Oracle喜歡將數字列作爲十進制返回)。在這種情況下,您可能需要將日期/日期時間轉換爲DateTime並提取Year屬性。 – Joshua