[英]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
嘗試解析值來進行最廣泛的描述。 如果您的要求比較嚴格,則可以使用其他類型(例如int
或float
)或正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.