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

11

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

我想要获取数组中第一个值为空或者为null的元素的索引。以下是我的代码:

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

那么我该如何获取第一次出现的索引值呢?

比如:

Cars[0] = "Acura"; 

如果是这样,那么索引应该返回1作为数组中下一个可用的位置。

2个回答

17

你可以使用Array.FindIndex方法来实现这个目的。

通过指定的条件搜索元素,返回整个数组中第一个满足条件的元素的零-based索引。

例如:

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

对于适用于任何 IEnumerable<T> 的更通用方法,请参阅:如何使用LINQ获取索引?


2
如果这些是字符串,为什么不使用!string.IsNullOrEmpty(i)呢? - neontapir

5
如果您想使用LINQ的方式来完成它,这里是方法:

如果您想使用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<>而不仅限于数组。它还是可组合的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接