【问题标题】:Using C# Linq to return first index of null/empty occurrence in an array使用 C# Linq 返回数组中出现空/空的第一个索引
【发布时间】:2011-03-23 04:28:05
【问题描述】:

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

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

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

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

例如:

Cars[0] = "Acura"; 

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

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您可以为此目的使用Array.FindIndex 方法。

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

    例如:

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

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

    【讨论】:

    • 如果这些是字符串,为什么不使用!string.IsNullOrEmpty(i)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多