Еще один вариант. Отфильтруйте, что нужно из списка:
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]
Затем, по-видимому, необходимо будет снять их к не допускающей 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);
И это работает. (??
объединяющий пустой указатель оператор; это использует первый операнд, если это является непустым, еще второй операнд оценивается и используется),
Хорошо. Так как DataSet не поддерживает nullable типы, необходимо было бы проверить, является ли свойство универсальным типом, получите универсальное определение того типа и затем получите аргумент (который является фактическим типом), использование, возможно, Nullable.GetUnderlyingType
. Если значение является нулевым, просто используйте DBNull.Value
в DataSet.
Если Nullable.GetUnderlyingType()
данный Ваш prop.PropertyType
возвращает не-нулевое-значение, используйте это в качестве типа столбца. Иначе использовать prop.PropertyType
самостоятельно.