C# 从列表中删除项目会弄乱列表中的其他项目

C# 从列表中删除项目会弄乱列表中的其他项目,c#,html,blazor,blazor-server-side,C#,Html,Blazor,Blazor Server Side,我在blazor中有一个html表,它填充了一个列表的循环(列减少以显示相关代码) @foreach(变量行中的行) {@{var linenumber=lines.IndexOf(line)} 去除 } @代码{ 私有列表行=新列表(); 专用异步任务删除程序(int行号) { lines=lines.Where(u=>lines.IndexOf(u)!=linenumber.ToList()); } } 当我从表中删除其中一行时,在其他行中选择的项将被更改 我曾尝试使用数组而不是列表,但

我在blazor中有一个html表,它填充了一个列表的循环(列减少以显示相关代码)

@foreach(变量行中的行)
{@{var linenumber=lines.IndexOf(line)}
去除
}
@代码{
私有列表行=新列表();
专用异步任务删除程序(int行号)
{
lines=lines.Where(u=>lines.IndexOf(u)!=linenumber.ToList());
}
}
当我从表中删除其中一行时,在其他行中选择的项将被更改

  • 我曾尝试使用数组而不是列表,但没有帮助
  • 尝试使用Linq和RemoveAt()更改removerow()方法。不会改变结果
在使用产品“铅笔”删除行之前:

移除产品“铅笔”后:

您的代码片段不包含
元素。它必须在那里,foreach()中的第一级。可以通过指定键来帮助渲染:

@foreach (var line in lines)
{
   <tr @key="@line">
   ... 
   </tr>
}

您的建议解决了我的问题,我不知道中的关键参数,另外,我们非常感谢您提出的简化建议。谢谢。
@foreach (var line in lines)
{
   <tr @key="@line">
   ... 
   </tr>
}
  @onclick="@(() => lines.Remove(line))">


// private async Task removeRow(int linenumber)
// {
//     lines = lines.Where(u => lines.IndexOf(u) != linenumber).ToList());
// }