0

我有一个小问题。在我的程序中,我需要一个 SqlCommand 对象列表。所以有一段代码:

List<SqlCommand> commands;
int i = 0;
foreach (string komenda in komendy)
{
    commands.ElementAt<SqlCommand>(i) = new SqlCommand(komenda, dostep());
    i++;
}

其中 komendy 是带有命令字符串的字符串列表,函数dostep()返回连接(SqlConnection对象)。

我有一个错误:赋值的左侧必须是 commands.ElementAt< SqlCommand >(i) 的变量、属性或索引器,我真的不明白为什么。

4

2 回答 2

1

ElementAt是一种返回序列中指定索引处的对象的方法,您正在使用它,因为它是将元素添加到列表中的分配。

使用List(of Type), 将元素添加到列表时,您使用Add 方法而不指定精确位置。(这是数组的主要工作)只需使用.....

 commands.Add(new SqlCommand(komenda, dostep()));

当然,在使用对象之前,您需要使用

List<SqlCommand> commands = new List<SqlCommand>();

作为旁注,我对您在初始化 SqlConnection 对象的情况下构建 SqlCommand 列表的方法感到有些困惑。如果您有许多命令,这可能会占用大量资源。

于 2013-04-13T07:49:42.723 回答
0

为什么不使用 LINQ:

List<SqlCommand> commands = komendy.Select(x => new SqlCommand(x, dostep())).ToList();

使用您的方法,您缺少commands初始化

List<SqlCommand> commands = new List<SqlCommand>();

你应该使用Add方法而不是ElementAt

foreach (string komenda in komendy)
{
    commands.Add(new SqlCommand(komenda, dostep()));
}
于 2013-04-13T07:48:21.127 回答