如何使用索引数组返回一行中指定的数组元素?

时间:2015-01-23 17:54:54

标签: c# arrays linq dictionary

我有没有办法说我想从数组中获取一些特定的值,可能会以这种方式使用?

string[] values = new string[]{"boogie","woogie","all","night"};

string[] refinedValues = values.GetIndexes(new int[]{ 0, 2 });

在这种情况下,refinedValues将是一个包含值"boogie""all"的数组。

2 个答案:

答案 0 :(得分:2)

你可以这样做

var refinedValues = new[] { 0, 2 }.Select(values.ElementAt);

自定义扩展方法看起来像这样

public static class EnumerableExtensions {
    public static IEnumerable<T> GetValues<T>(this IEnumerable<T> enumerable, params Int32[] indices) {
        return indices.Select(enumerable.ElementAt);
    }
}

答案 1 :(得分:1)

是的,使用一点LINQ:

string[] values = new string[] { "boogie", "woogie", "all", "night" };

var indexes = new[] {0, 2};
string[] refinedValues = values.Where((e, i) => indexes.Contains(i)).ToArray();

//refined-values contains "boogie", "all"