我渴望知道最好的方法来检查,如果数据集有记录与否。 我一直在使用下面的代码来检查数据集是否有一些记录。但我觉得有一些更好/最好的方法可以实现这一点。最佳做法有记录
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