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

发布于 2024-10-26 00:43:09 字数 337 浏览 1 评论 0原文

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

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

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

但是如何获得此类事件的第一个索引?

例如:

Cars[0] = "Acura"; 

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

I have an array of strings called "Cars"

I would like to get the first index of the array is either null, or the value stored is empty. This is what I got so far:

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

But how do I get the first INDEX of such an occurrence?

For example:

Cars[0] = "Acura"; 

then the index should return 1 as the next available spot in the array.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋千易 2024-11-02 00:43:09

您可以使用 Array.FindIndex方法。

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

例如:

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

有关适用于任何 IEnumerable 的更通用方法,请查看:如何使用 LINQ 获取索引?

You can use the Array.FindIndex method for this purpose.

Searches for an element that matches
the conditions defined by the
specified predicate, and returns the
zero-based index of the first
occurrence within the entire Array.

For example:

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

For a more general-purpose method that works on any IEnumerable<T>, take a look at: How to get index using LINQ?.

朱染 2024-11-02 00:43:09

如果您想要 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<>,而不仅仅是数组。它也是可组合的。

If you want the LINQ way of doing it, here it is:

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

var result = nullOrEmptyIndices.First();

Maybe not as succinct as Array.FindIndex, but it will work on any IEnumerable<> rather than only arrays. It is also composable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文