我渴望知道最好的方法來檢查,如果數據集有記錄與否。 我一直在使用下面的代碼來檢查數據集是否有一些記錄。但我覺得有一些更好/最好的方法可以實現這一點。最佳做法有記錄
Dataset tableData = New Dataset();
if (_tableData.Tables.Count > 0 && _tableData.Tables[0].Rows.Count > 0)
{
}
如果我感覺正確,請分享一些知識。
感謝
我渴望知道最好的方法來檢查,如果數據集有記錄與否。 我一直在使用下面的代碼來檢查數據集是否有一些記錄。但我覺得有一些更好/最好的方法可以實現這一點。最佳做法有記錄
Dataset tableData = New Dataset();
if (_tableData.Tables.Count > 0 && _tableData.Tables[0].Rows.Count > 0)
{
}
如果我感覺正確,請分享一些知識。
感謝
這將返回true
如果有任何表的任何行。如果沒有表或沒有行,它將返回false
。
DataSet tableData; // ... instantiate DataSet
bool hasRows = tableData.Tables.Cast<DataTable>()
.Any(table => table.Rows.Count != 0);
它引發一個錯誤,「不包含AsEnumerable()的定義.........」 – 2012-02-07 10:10:52
@Deepak修復它 - thx指出錯誤 – 2012-02-07 10:14:26
'Cast
您可以HasChanges()
這將是隻包括數據的全成插入新的,刪除或修改行
DataSet dSet = new DataSet();
if (dSet.HasChanges())
{
}
你也可以得到它通過DataSet.HasChanges(DataRowState)
確切地知道發生新的行是否添加,修改或刪除
如果行被修改,它會被設置爲true嗎?例如更新/刪除等。 – 2012-02-07 10:03:45
是的,當然我說na。請參閱我給出的鏈接。 – 2012-02-07 10:09:47
反正謝謝賽。 – 2012-02-07 10:24:53
如果在你的DataSet
那麼你的邏輯多個表不會爲某些情況下工作。 這種方法較爲齊全:
bool HasRecords(DataSet dataSet)
{
foreach (DataTable dt in dataSet.Tables) if (dt.Rows.Count > 0) return true;
return false;
}
感謝您的回答。我有一個查詢。正如你在談論數據集中的多個表一樣,通過這段代碼,如果有兩個表,並且第一個有行而第二個沒有行,我就會變成真。 – 2012-02-07 10:07:48
正確,如果「DataSet」中有任何記錄,則無論在哪個表中,都會變爲true。如果你想確保所有的表都有記錄: '布爾HasRecords(DataSet的數據集) { \t布爾RES = TRUE; (dataTable dt in dataSet.Tables)if(dt.Rows.Count == 0)res = false; \t return res; }' – Tomek 2012-02-07 10:11:51
嗯好是不會做的工作,如果你有DataSet中的多個數據表。
可沒想到這裏我需要做的這是誠實的場合。如果我有類似的需求,我會在DataSet中查找表,因爲假設所有那些人都出於某種功能原因。
所以我可能只是檢查客戶表是否是空的,一個SELECT COUNT,因爲如果是在檢查什麼都沒有任何意義。
正確。但在這裏我知道我只有一張桌子。所以只需檢查一張桌子。如果我選擇多個表格,我一定會採用不同的方法。好的一點,但。 – 2012-02-07 10:18:04
http://msdn.microsoft.com/en-us/library/system.data.datatablereader.hasrows.aspx
嘗試檢查這個環節,我認爲這就是你想做什麼。
DataSet通常是多個DataTable的容器。我沒有看到知道某些DataSet表是否包含行的原因。難道它不太容易出錯,只能檢查現有記錄的相關DataTable嗎? (即使你的DataSet現在只包含一個表格,將來可能會改變) – 2012-02-07 10:10:14
你是對的Tim。我會牢記這一點。 – 2012-02-07 10:15:22