dla tego zapytania LINQ Dostaję poniższy wyjątek:InvalidCastException w kwerendzie LINQ
(from row in ds.Tables[0].AsEnumerable()
where row.Field<string>("Dept_line_code") == DeptCode &&
row.Field<string>("Skill_Name") == skill &&
row.Field<string>("Acct_Code") == account && row.Field<string>("Location") == dtNewTable.Rows[intRow]["Location"].ToString()
select row.Field<int>("Presently_Available") == null ? 0 : row.Field<int>("Presently_Available")
).FirstOrDefault();
informacje Wyjątek:
typ Wyjątek: InvalidCastException
wiadomośćWyjątek: Nie można rzucać DBNull .Opcja do wpisania "System.Int32". Użyj typu zerowego.
Nie znam typu zerowego i nie rozumiem, jak używać typu nullable do pokonania tego wyjątku.
skrócie: domyślnie prymitywne typy (takie jak 'int',', 'double' pływaka ', ...) nie można przypisać wartości null. Rozwiązaniem tego problemu jest użycie typu nullable (np. 'Int?'), Który jest tak naprawdę tylko otoką wokół typu pierwotnego. – ean5533
Wygląda na to, że używasz DataSet, prawdopodobnie wypełnionego przez DataAdapter. Następnie możesz wypełnić nie DataSet [ale DataTable] (http://msdn.microsoft.com/en-us/library/905keexk.aspx), jeśli masz pewność, że wynikowe zapytanie zawiera tylko jedną tabelę. – abatishchev
Kiedy potrzebujemy użyć typów nullable? jakie scenariusze? dlaczego musimy używać tego samego? Potrzebujesz informacji o celu i zaletach lub wadach typów NUllable? – venkat