【发布时间】:2025-12-17 18:00:01
【问题描述】:
我正在尝试为 ASP.NET 编写一个函数,该函数检查表中的现有 ID,并为我在其他地方使用的 INSERT 命令返回一个未使用的 ID。但是,当我在表中只有 3 个成员时,这个函数会吐出一个 61 个成员的随机数数组。
public int getId()
{
List<int> list = new List<int>();
string sql = @"select Id from dbo.Tasks";
using (IDbConnection cnn = new SqlConnection(connString("db1")))
{
foreach (int a in Convert.ToString(cnn.Query(sql)).ToList())
{
list.Add(a);
}
}
for (int x = 0; x < 100; x++) if (!list.Contains(x)) return x;
return 99;
}
Count = 61
83
121
115
116
101
109
//etc.
{ToDo.Controllers.HomeController}
但是,此列表甚至不包含表中的现有 ID,这会导致在创建新行时出现重复的主错误。
【问题讨论】:
-
为什么是 Convert.ToString?
-
您尝试将查询结果转换为字符串,但结果是
IEnumerable,无法转换为字符串。您将得到的只是一个描述对象类型的字符串。然后你在上面调用了ToList,它已经将它转换成一个字符串