簡體   English   中英

檢查數據表列是否包含數值

[英]Check datatable column contains numeric values

我只想查找包含數字值的那些行表單表,因此我如下

dtDetails.Select(" (ISNUMERIC(OriginatingTransit)=0)")

但它引發異常

The expression contains undefined function call ISNUMERIC().

您必須在數據庫級別執行此操作,或者循環遍歷自己並編寫一些檢查值是否可以解析為數字的操作。 Select方法不支持您要執行的操作: MSDN上的Expression屬性包含有關所支持內容的信息

bool IsNumeric(object o)
{
  decimal result_ignored;
  return o != null && 
    !(o is DBNull) && 
    decimal.TryParse(Convert.ToString(o), out result_ignored);
}

然后您可以執行以下操作:

var filtered = dtDetails.Rows.Cast<DataRow>().
  Where(r => IsNumeric(r["OriginatingTransit"]));

如果隨后枚舉filtered ,則將僅獲得該列中具有數字值的那些。

這不是完美的-因為正如在您對以上問題的評論中Surjit Samra所鏈接的答案中的某些評論所提到的那樣,“是數字”的確切含義是松散的。 我認為,這是通過使用decimal嘗試解析值來進行最廣泛的描述。 如果您的要求比較嚴格,則可以使用其他類型(例如intfloat )或正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM