在可枚举选择中返回索引

时间:2010-03-29 16:15:55

标签: c# linq .net-3.5 c#-3.0 ienumerable

我有一个List<MyClass>,其中包含2个具有SequenceNumber属性的项目。

如果我在下面使用此代码,则返回的索引为0而不是1:

var test = TrackingCollection
                .Where(x =>  x.SequenceNumber == 2)
                .Select((item, index) =>
                                    new
                                    {
                                         index, item.SequenceNumber
                                    });

这是因为它在我的新匿名类型中引用了0作为索引,还是我需要增加的一些基于零索引的怪异。

我所追求的是返回TrackingCollection中的索引,其中序列号为2或887或原始集合中的任何其他正确索引...

2 个答案:

答案 0 :(得分:4)

听起来你的问题是在索引之前过滤列表。生成索引后需要进行过滤。简单地稍后放置Where子句:

var test = TrackingCollection 
            .Select((item, index) => 
                                new 
                                { 
                                     index, item.SequenceNumber 
                                })
            .Where(x =>  x.SequenceNumber == 2);

答案 1 :(得分:0)

为什么不应该为零?默认情况下,C#的集合索引从零开始。