.NET - преобразовывает универсальный набор в DataTable

Еще один вариант. Отфильтруйте, что нужно из списка:

item_no = [3,5,7,3,5,7,3,5,7,9]

min_value = min(item_no)
print(list(filter(lambda x: x == min_value, item_no)))

# [3, 3, 3]
74
задан Ronnie Overby 31 March 2009 в 14:27
поделиться

3 ответа

Затем, по-видимому, необходимо будет снять их к не допускающей NULL-значения форме, с помощью Nullable.GetUnderlyingType, и, возможно, измените некоторых null значения к DbNull.Value...

Измените присвоение, чтобы быть:

row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;

и при добавлении столбцов, чтобы быть:

table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(
            prop.PropertyType) ?? prop.PropertyType);

И это работает. (?? объединяющий пустой указатель оператор; это использует первый операнд, если это является непустым, еще второй операнд оценивается и используется),

136
ответ дан Marc Gravell 24 November 2019 в 11:56
поделиться

Хорошо. Так как DataSet не поддерживает nullable типы, необходимо было бы проверить, является ли свойство универсальным типом, получите универсальное определение того типа и затем получите аргумент (который является фактическим типом), использование, возможно, Nullable.GetUnderlyingType. Если значение является нулевым, просто используйте DBNull.Value в DataSet.

5
ответ дан J. Steen 24 November 2019 в 11:56
поделиться

Если Nullable.GetUnderlyingType() данный Ваш prop.PropertyType возвращает не-нулевое-значение, используйте это в качестве типа столбца. Иначе использовать prop.PropertyType самостоятельно.

5
ответ дан Anton Gogolev 24 November 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: