使用C#Linq返回数组中空/空出现的第一个索引

时间:2011-03-23 04:28:06

标签: c# linq

我有一个名为“Cars”的字符串数组

我想让数组的第一个索引为null,或者存储的值为空。这是我到目前为止所得到的:

private static string[] Cars;
Cars = new string[10];
var result = Cars.Where(i => i==null || i.Length == 0).First(); 

但是如何获得这种情况的第一个INDEX?

例如:

Cars[0] = "Acura"; 

然后索引应该返回1作为数组中的下一个可用点。

2 个答案:

答案 0 :(得分:15)

您可以使用Array.FindIndex方法来实现此目的。

  

搜索匹配的元素   由...定义的条件   指定谓词,并返回   第一个从零开始的索引   在整个数组中出现。

例如:

int index = Array.FindIndex(Cars, i => i == null || i.Length == 0);

有关适用于任何IEnumerable<T>的更通用的方法,请查看:How to get index using LINQ?

答案 1 :(得分:5)

如果你想要LINQ方式,那么它就是:

var nullOrEmptyIndices =
    Cars
        .Select((car, index) => new { car, index })
        .Where(x => String.IsNullOrEmpty(x.car))
        .Select(x => x.index);

var result = nullOrEmptyIndices.First();

可能不像Array.FindIndex那样简洁,但它适用于任何IEnumerable<>而不仅仅是数组。它也是可以组合的。