删除除给定索引号之外的所有元素

Mic*_*iva 3 c# linq

我有以下列表,如何从linq中删除给定索引号的所有元素:

    List<string> a = new List<string>();
        a.Add("number1");
        a.Add("number2");
        a.Add("number3");
Run Code Online (Sandbox Code Playgroud)

如何使用linq删除除索引号= 2的元素之外的所有元素.

Jon*_*eet 10

LINQ不是要删除东西 - 而是关于查询.

您可以调用RemoveRange以从列表中删除一系列项目.所以:

a.RemoveRange(0, 2);
Run Code Online (Sandbox Code Playgroud)

将只留下"number3".

或者您可以根据dasblinkenlight的答案创建一个新列表.如果您可以告诉我们更多关于您要实现的目标以及您认为LINQ是解决方案的原因,我们可以为您提供更多帮助.

编辑:好的,现在我们有更清晰的要求,你可以使用LINQ:

var newList = a.Where((value, index) => index != 2)
               .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @MichaelRiva:所以你实际上并没有*试图从列表中删除元素?您想要创建一个新列表吗?明确这些事情很重要.这听起来像你试图过滤掉元素2,而不是过滤掉所有*但*元素2?你很*不清楚...... (3认同)