【发布时间】:2015-10-08 17:02:46
【问题描述】:
背景
我有一个包含数字列表的表格。我检索此列表并将其放入数据表中。然后,我遍历表中的行并显示 1000 到 9999 之间不在表中的每个数字。
我的循环
static DataTable table = new DataTable();
foreach (DataRow row in table.Rows)
{
int id = Convert.ToInt32(row["stationid"]);
for (int i = 1000; i < 9999 - table.Rows.Count; i = i++)
{
if (i != id)
{
stationIdsTb.Text += Environment.NewLine;
stationIdsTb.Text += i.ToString();
}
}
}
问题
但是这种方法确实有效。它非常慢。
有没有更高效、更快捷的方法来计算 1000 到 9999 之间不在数据表中的数字?
【问题讨论】:
-
澄清一下,您的代码没有给出正确的结果,对吧?因为您描述的内容与您的代码不匹配。 (前几个回答的人建议使用更快的代码,但逻辑大体相同,因此仍然无法正常工作)。
-
@piojo,不,它确实给出了正确的结果,只是需要很长时间。也许我没有正确解释。我想显示不在数据表中且介于 1000 和 9999 之间的每个数字。
-
有趣。你确定吗?该代码看起来确实会多次给出 1000 到 9999 之间的每个数字,而那些在数据库中的数字会更少,但仍然会给出。
-
@piojo,抱歉。你说的对。它确实会产生同一个列表的多个输出。
-
很酷,那就多关注后面的答案——他们花时间注意到了差异。 :)
标签: c# loops if-statement foreach iteration