2011-03-23 10 views
8

bir dizideki null/boş geçtiği ilk indeksi dönmek için depolanan boş.kullanma C# Linq ben dizinin ilk endeks boş veya değer olduğundan almak istiyorum ben "Arabalar"</p> <p>denilen dizelerden oluşan bir dizi var

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

Ama nasıl böyle bir oluşum ilk INDEX alabilirim: Bu defa o mu öldürdü? Örneğin

:

Cars[0] = "Acura"; 

sonra dizin dizideki bir sonraki nokta olarak 1 dönmek gerekir.

cevap

14

Bu amaç için Array.FindIndex yöntemini kullanabilirsiniz. belirtilen dayanak tarafından tanımlanan koşullarına uygun ve tüm dizi içindeki birinci oluşma sıfır tabanlı dizin döner bir eleman için

arar. Örneğin

: How to get index using LINQ?: Herhangi IEnumerable<T> çalışır daha genel amaçlı yöntemi için

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

, bir göz atın. Array.FindIndex olarak

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

var result = nullOrEmptyIndices.First(); 

Belki olarak özlü değil, ancak yalnızca diziler yerine herhangi IEnumerable<> üzerinde çalışacak: Bunu yapmanın LINQ bir şekilde istiyorsanız

+2

Bunlar dizgilerse, neden '! String.IsNullOrEmpty (i)' yi kullanmayın – neontapir

İlgili konular