C# 使用LINQ从索引不等于整数的列表中获取项

C# 使用LINQ从索引不等于整数的列表中获取项,c#,linq,list,C#,Linq,List,我有一个列表中的项目,我想得到索引不等于某物的所有项目 假设这是一个按钮列表。我如何使用以下类似的方法获得具有索引而不是索引的按钮 var buttons = buttonList.Where(b => b<indexOfbutton> != index); 更新: 我正试着排成一行。所以我假设有另一个linq查询从buttonList获取按钮索引 最终目标是获取不包含相关索引的列表。您可以在lambda表达式中指定索引,因为存在另一个采用Func的方法重载: 系统功能 用于

我有一个列表中的项目,我想得到索引不等于某物的所有项目

假设这是一个按钮列表。我如何使用以下类似的方法获得具有索引而不是索引的按钮

var buttons = buttonList.Where(b => b<indexOfbutton> != index);
更新:

我正试着排成一行。所以我假设有另一个linq查询从buttonList获取按钮索引

最终目标是获取不包含相关索引的列表。

您可以在lambda表达式中指定索引,因为存在另一个采用Func的方法重载:

系统功能

用于测试每个源元素的条件的函数;第二 函数的参数表示源元素的索引

您还可以为此编写扩展方法:

public static class Extensions
{
    public static IEnumerable<T> SkipIndex<T>(this IEnumerable<T> source, int index)
    {
        int counter = 0;
        foreach (var item in source)
        {
            if (counter != index)
                yield return item;

            counter++;
        }
    }
}
如果要获取带有索引的按钮:

var buttons = buttonList
              .Select((b,idx) => new { Button = b, Index = idx })
              .Where(x => x.Index != index)
              .ToList();
这将返回一个匿名类型列表,其中包含两个属性,一个是按钮,另一个是索引。

您可以在lambda表达式中指定索引,因为另一个重载方法采用Func:

系统功能

用于测试每个源元素的条件的函数;第二 函数的参数表示源元素的索引

您还可以为此编写扩展方法:

public static class Extensions
{
    public static IEnumerable<T> SkipIndex<T>(this IEnumerable<T> source, int index)
    {
        int counter = 0;
        foreach (var item in source)
        {
            if (counter != index)
                yield return item;

            counter++;
        }
    }
}
如果要获取带有索引的按钮:

var buttons = buttonList
              .Select((b,idx) => new { Button = b, Index = idx })
              .Where(x => x.Index != index)
              .ToList();

这将返回一个匿名类型列表,其中包含两个属性,一个是按钮,另一个是索引。

如果我有丢弃列表,如果我不需要原始列表,只有没有元素的列表,而按钮列表是IList,我会使用类似

buttonList.RemoveAt(index);

如果我有一个丢弃列表,如果我不需要原始列表,只需要一个没有元素的列表,而buttonList是IList,我会使用类似

buttonList.RemoveAt(index);

这将是从列表中删除具有该索引的项的有效方法。请注意,这实际上会改变列表,尽管我假设这就是您使用“扔掉”的目的。现在是“扔掉”list@dvlsg,是的,这就是我所说的“扔掉”的意思。如果这是一个“扔掉”列表,我会选择这个作为答案,但在我的情况下,这个列表不应该改变。我喜欢它是直截了当的。这将是一种从列表中删除具有该索引的项目的有效方法。请注意,这实际上会改变列表,尽管我假设这就是您使用“扔掉”的目的。现在是“扔掉”list@dvlsg,是的,这就是我所说的“扔掉”的意思。如果这是一个“扔掉”列表,我会选择这个作为答案,但在我的情况下,这个列表不应该改变。我喜欢直截了当的回答。我仍然不确定我是否完全理解这个问题。这里的最终目标是拥有一个不包含有问题的索引以及indexOfButton的列表吗?indexOfButton将是一个不等于所提供索引的索引列表,对吗?最终目标是得到不包含所讨论索引的列表。我认为Selman22和hazzik有两个答案,这两个答案都将实现这一点。塞尔曼22的答案不会修改原始列表,哈兹克的答案也会修改。我还是有点搞不清楚是否有索引按钮。我认为这里的假设是你已经知道了这个索引,它存储在索引变量中,不,它不存储在变量中。我也必须从buttonList查询该按钮的索引。否则它将像var buttons=buttonList一样简单。其中b=>b.index!=指数我还不确定我是否完全理解这个问题。这里的最终目标是拥有一个不包含有问题的索引以及indexOfButton的列表吗?indexOfButton将是一个不等于所提供索引的索引列表,对吗?最终目标是得到不包含所讨论索引的列表。我认为Selman22和hazzik有两个答案,这两个答案都将实现这一点。塞尔曼22的答案不会修改原始列表,哈兹克的答案也会修改。我还是有点搞不清楚是否有索引按钮。我认为这里的假设是你已经知道了这个索引,它存储在索引变量中,不,它不存储在变量中。我也必须从buttonList查询该按钮的索引。否则它将像var buttons=buttonList一样简单。其中b=>b.index!=指数