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

Mag*_*num 9 c# linq

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

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

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

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

例如:

Cars[0] = "Acura"; 
Run Code Online (Sandbox Code Playgroud)

那么索引应该返回1作为数组中的下一个可用点.

Ani*_*Ani 15

您可以将此Array.FindIndex 方法用于此目的.

搜索与指定谓词定义的条件匹配的元素,并返回整个Array中第一个匹配项的从零开始的索引.

例如:

int index = Array.FindIndex(Cars, i => i == null || i.Length == 0);
Run Code Online (Sandbox Code Playgroud)

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

  • 如果这些是字符串,为什么不使用`!string.IsNullOrEmpty(i)` (2认同)

Eni*_*ity 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();
Run Code Online (Sandbox Code Playgroud)

也许不是那么简洁Array.FindIndex,但它可以在任何IEnumerable<>而不仅仅是数组上工作.它也是可组合的.