C# SqlCommand和error:赋值的左侧必须是变量、属性或索引器

C# SqlCommand和error:赋值的左侧必须是变量、属性或索引器,c#,wpf,list,sqlcommand,C#,Wpf,List,Sqlcommand,我有个小问题。在我的程序中,我需要一个SqlCommand对象列表。所以这里有一段代码: List<SqlCommand> commands; int i = 0; foreach (string komenda in komendy) { commands.ElementAt<SqlCommand>(i) = new SqlCommand(komenda, dostep()); i++; } 列出命令; int i=0; foreach(科门迪中的科门

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

List<SqlCommand> commands;
int i = 0;
foreach (string komenda in komendy)
{
    commands.ElementAt<SqlCommand>(i) = new SqlCommand(komenda, dostep());
    i++;
}
列出命令;
int i=0;
foreach(科门迪中的科门达字符串)
{
ElementAt(i)=新的SqlCommand(komenda,dostep());
i++;
}
其中komendy是一个包含命令字符串的字符串列表,函数
dostep()
返回连接(
SqlConnection
object)


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

为什么不使用LINQ:

List<SqlCommand> commands = komendy.Select(x => new SqlCommand(x, dostep())).ToList();
您应该使用
Add
方法而不是
ElementAt

foreach (string komenda in komendy)
{
    commands.Add(new SqlCommand(komenda, dostep()));
}
是一个方法,它返回序列中指定索引处的对象,您使用它是因为它是一个赋值,用于将元素添加到列表中

使用
列表(类型)
时,要向列表中添加元素,请使用,而无需指定精确位置。(这是阵列的主要工作) 就用

 commands.Add(new SqlCommand(komenda, dostep()));
当然,在使用对象之前,需要使用

List<SqlCommand> commands = new List<SqlCommand>();
List命令=新建列表();

顺便说一句,我对您在初始化SqlConnection对象的情况下构建SqlCommand列表的方法有点困惑。如果您有许多命令,这可能会占用大量资源

+1不仅提供了一个解决方案,还回答了为什么会抛出异常的问题。哦,我不知道为什么我忘记了添加函数。非常感谢你的帮助。
List<SqlCommand> commands = new List<SqlCommand>();