首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >c# Array.FindAllIndexOf which IndexOf

c# Array.FindAllIndexOf which IndexOf
EN

Stack Overflow用户
提问于 2012-05-04 14:02:34
回答 7查看 30.7K关注 0票数 30

我知道c#有Array.FindAllArray.IndexOf

是否有返回int[]Array.FindAllIndexOf

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-05-04 14:09:52

string[] myarr = new string[] {"s", "f", "s"};

int[] v = myarr.Select((b,i) => b == "s" ? i : -1).Where(i => i != -1).ToArray();

这将返回0,2

如果数组中不存在该值,则它将返回一个int。

创建它的扩展方法

public static class EM
{
    public static int[] FindAllIndexof<T>(this IEnumerable<T> values, T val)
    {
        return values.Select((b,i) => object.Equals(b, val) ? i : -1).Where(i => i != -1).ToArray();
    }
}

并将其命名为

string[] myarr = new string[] {"s", "f", "s"};

int[] v = myarr.FindAllIndexof("s");
票数 37
EN

Stack Overflow用户

发布于 2013-03-08 21:52:52

搜索与指定谓词定义的条件匹配的元素,并返回整个System.Array内该匹配项的所有从零开始的索引。

public static int[] FindAllIndex<T>(this T[] array, Predicate<T> match)
{
    return array.Select((value, index) => match(value) ? index : -1)
            .Where(index => index != -1).ToArray();
}
票数 5
EN

Stack Overflow用户

发布于 2012-05-04 14:24:09

不,没有。但您可以编写自己的extension method

public static int[] FindAllIndexOf<T>(this T[] a, Predicate<T> match)
{
   T[] subArray = Array.FindAll<T>(a, match);
   return (from T item in subArray select Array.IndexOf(a, item)).ToArray();
}

然后,对于您的数组,调用它。

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

https://stackoverflow.com/questions/10443461

复制
相关文章

相似问题

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