首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从列表中获取元素的索引

从列表中获取元素的索引
EN

Stack Overflow用户
提问于 2012-11-05 03:24:23
回答 2查看 99关注 0票数 0

假设我有一个名为TheListOfMyObjects的对象列表。在该列表中,有一个对象,其属性与一个值相匹配:MyObject.TheProperty = SomeValue

如何从该列表中获取前3个对象和下3个对象?

注意,如果匹配SomeValue的对象在第一个位置,那么我需要位置2-5的3个对象和最后3个位置的3个对象,总共需要6个对象。

谢谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-05 03:30:16

试试这个:

代码语言:javascript
复制
var theObj = TheListOfMyObjects.First(x => x.TheProperty == someValue);
var index = TheListOfMyObjects.IndexOf(theObj);
//and from there it's obvious.

如果列表中可能不包含这样的元素,请在theObj上使用FirstOrDefault并检查null。

票数 3
EN

Stack Overflow用户

发布于 2012-11-05 03:56:48

很抱歉回答得太晚了,我的电脑出了问题。你不需要添加另一个列表,如果你的列表中至少有7个对象,你可以用下面这样的东西来解决边缘情况:

代码语言:javascript
复制
            MyObject mo = list.FirstOrDefault(x => x.TheProperty.Equals(SomeValue));
            if(mo != null)
            {
                int index = list.IndexOf(mo);
                MyObject moMinus3 = list[(index - 3 + list.Count) % list.Count];
                MyObject moMinus2 = list[(index - 2 + list.Count) % list.Count];
                MyObject moMinus1 = list[(index - 1 + list.Count) % list.Count];
                MyObject mo0 = list[index];
                MyObject moPlus1 = list[(index + 1 + list.Count) % list.Count];
                MyObject moPlus2 = list[(index + 2 + list.Count) % list.Count];
                MyObject moPlus3 = list[(index + 3 + list.Count) % list.Count];
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13222005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档