首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用LINQ查询获取索引值的集合

使用LINQ查询获取索引值的集合
EN

Stack Overflow用户
提问于 2008-10-26 02:00:17
回答 4查看 10.8K关注 0票数 17

有没有更好的方法来做这件事?

代码语言:javascript
复制
string[] s = {"zero", "one", "two", "three", "four", "five"};

var x = 
s
.Select((a,i) => new {Value = a, Index = i})
.Where(b => b.Value.StartsWith("t"))
.Select(c => c.Index);

也就是说,我正在寻找一种更有效或更优雅的方法来获得匹配条件的项目的位置。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-26 07:15:57

您可以很容易地添加自己的扩展方法:

代码语言:javascript
复制
public static IEnumerable<int> IndexesWhere<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
    int index=0;
    foreach (T element in source)
    {
        if (predicate(element))
        {
            yield return index;
        }
        index++;
    }
}

然后将其与以下内容一起使用:

代码语言:javascript
复制
string[] s = {"zero", "one", "two", "three", "four", "five"};
var x = s.IndexesWhere(t => t.StartsWith("t"));
票数 32
EN

Stack Overflow用户

发布于 2008-10-26 02:03:08

我觉得挺好的。您可以通过将选择更改为:

代码语言:javascript
复制
.Select((Value, Index) => new {Value, Index})
票数 5
EN

Stack Overflow用户

发布于 2009-04-16 13:53:52

在集合列表中还有一个FindIndex方法,您可以为其创建一个delete方法,该方法可以从集合中返回索引。您可以在msdn http://msdn.microsoft.com/en-us/library/x1xzf2ca.aspx中参考以下链接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/237377

复制
相关文章

相似问题

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