Определите, является ли DataColumn числовым

Моим фаворитом является Платформа Spring. С 2,5 Spring MVC является задницей удара soooo, с новыми аннотациями, соглашением по функциям конфигурации, и т.д.

, Если Вы просто делаете что-то супер простое, Вы могли бы также просто попытаться использовать регулярный API Сервлета и не обеспокоиться платформой.

16
задан JustinStolle 12 November 2009 в 22:37
поделиться

2 ответа

Нет хорошего способа проверить, является ли тип числовым, кроме сравнения его с реальными типами.
Это особенно верно, если определение числового немного отличается (в вашем случае, согласно коду, - целые числа без знака не являются числами).

Другое дело, что DataColumn.DataType согласно MSDN поддерживает только следующие типы:

  • Boolean
  • Byte
  • Char
  • DateTime
  • Decimal
  • Double
  • ] Int16
  • Int32
  • Int64
  • SByte
  • Single
  • String
  • TimeSpan
  • UInt16
  • UInt32
  • UInt64
  • Byte []

] выделенные жирным шрифтом типы являются числовыми (в моем понимании), поэтому вам нужно обязательно их проверить.

Я бы лично написал метод расширения для типа DataColumn (не для TYPE!).
Я ненавижу if ... then..else , поэтому вместо этого я использую подход на основе SETS , например:

public static bool IsNumeric(this DataColumn col) {
  if (col == null)
    return false;
  // Make this const
  var numericTypes = new [] { typeof(Byte), typeof(Decimal), typeof(Double),
        typeof(Int16), typeof(Int32), typeof(Int64), typeof(SByte),
        typeof(Single), typeof(UInt16), typeof(UInt32), typeof(UInt64)};
  return numericTypes.Contains(col.DataType);
}

И использование будет следующим:

if (col.IsNumeric()) ....

для меня достаточно просто

39
ответ дан 30 November 2019 в 16:14
поделиться

Возможно, вы могли бы сделать его короче с помощью:

System.Type theType = col.DataType AS System.Type
if(theType  == System.Single || theType  == System.Double...) {}
1
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

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