我有一个名为“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作为数组中的下一个可用点。
答案 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<>
而不仅仅是数组。它也是可以组合的。