manuel_joseph Ответов: 1

LINQ-запроса возвращает список столбцов -- указанное приведение недопустимо


LINQ-запроса возвращает список столбцов из таблицы

Как вернуть дескриптор нулевых значений , используя какой тип данных

DataTable PreviousQuarter = GroupFive.Tables["PreviousQuarter_108_49_100_51"];
                LastQuarter.Merge(PreviousQuarter);
                
                var AHCT = (from ah in PreviousQuarter.AsEnumerable()
                                  where
                                    ah.Field<int>("ParameterID") == 10 || ah.Field<int>("ParameterID") == 11
                                     || ah.Field<int>("ParameterID") == 12 || ah.Field<int>("ParameterID") == 13
                                  select ah.Field<int>("Tot_Tkts_Closed")).ToList();
                               
                if (AHCT == null)
                {
                    Response = "";
                }


Что я уже пробовал:

DataTable PreviousQuarter = GroupFive.Tables["PreviousQuarter_108_49_100_51"];
                LastQuarter.Merge(PreviousQuarter);
                
                var AHCT = (from ah in PreviousQuarter.AsEnumerable()
                                  where
                                    ah.Field<int>("ParameterID") == 10 || ah.Field<int>("ParameterID") == 11
                                     || ah.Field<int>("ParameterID") == 12 || ah.Field<int>("ParameterID") == 13
                                  select ah.Field<int>("Tot_Tkts_Closed")).ToList();
                               
                if (AHCT == null)
                {
                    Response = "";
                }

1 Ответов

Рейтинг:
2

Andy Lanng

"int" является структурой и не может быть null. Nullable<int> - Это класс, который может быть нулевым. Общий ярлык-int? что работает почти так же, как int.

Некоторые различия заключаются в том, что вам нужно использовать свойство Value, чтобы получить ненулевое значение. Он возвращает значение по умолчанию<int>, когда оно равно нулю, то есть нулю (0).

DataTable PreviousQuarter = GroupFive.Tables["PreviousQuarter_108_49_100_51"];
                LastQuarter.Merge(PreviousQuarter);
                
                var AHCT = (from ah in PreviousQuarter.AsEnumerable()
                                  where
                                    ah.Field<int?>("ParameterID").Value == 10 || ah.Field<int?>("ParameterID") == 11
                                     || ah.Field<int?>("ParameterID").Value == 12 || ah.Field<int?>("ParameterID") == 13
                                  select ah.Field<int?>("Tot_Tkts_Closed")).ToList();
                               
                if (AHCT == null)
                {
                    Response = "";
                }


Richard Deeming

Небольшая поправка: Value свойство выбрасывает исключение, если значение равно null- Это самое главное. GetValueOrDefault метод, который возвращает 0 если значение равно null.